ISPN-4950 Add ability to merge defaults into Metadata passed as param

* This is required in order to be able to apply default lifespan and max idle settings configured globally for the cache.
* To do so, a new method has been added to builder that allows a Metadata object to be merged with the builder instance.
* By making the default metadata builder implementation use objects for primitives, it can easily distinguish between those settings that have been set by the user versus the builder defaults.
Wonder if we just want to call hasLifespan and hasMaxIdle once and store them in local variables so they don't have to be evaluated 2x if there is no lifespan or idle?  This is pretty minor given the lack of complexity for the methods.