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.
Actually this reminds me, do you know why we don't have the other async methods take metadata?