Call provideLazy to get or make the value associated with the key. If there already is one, return that. Otherwise, call makeValue(key), remember it as the value for that key, and return it.