Make this constant final and publicly accessible.
Occasionally avoid a clone().
Added ExpressionBinding.EMPTY_ARRAY.
Replace SoftCache with a Map backed by a guava Cache.

SoftCache is some pretty basic stuff. It got the job done,
but the map view exposed the SoftReferences...

But the reason for the change is that while the values could be
collected, the Entry (and key) were held onto until something came in
and actually cleaned them up, either by iterating over the exposed
Map and manually removing them, or by trying to get the key.

Usually not the hugest deal, but for a ParameterizedConfig the keys
were ArgumentMaps that could be large. Better to clean this stuff
out as quickly as possible.

I could have enhanced SoftCache with a ReferenceQueue, but without
synchronization I would have to modify the map (to remove
entries for which the values were collected) on the dobj thread,
which I can't just access from anywhere.

One thing: ParameterizedConfig is iterating the Map of derived configs
at the same time as it map modify them. I need to check that to make
sure it's kosher now... Or I go back to copying all the entries first.
CacheUtil hides boilerplate of creating a Map with soft values.