A map of K to V, but does ref counting for added and removed values. The values are
not added directly, but instead requested from the given Supplier if ref count == 0. Each put()
call will increment the ref count, and each remove() will decrement it. The values are removed
from the map iff ref count == 0.