MetadataMap can be a performance bottleneck

@solcre has an application that contains around 50 entities/collections. In profiling, he discovered that `MetadataMap::setMap` was taking around 318ms. Drilling into the profile, we discovered that the actual bottleneck is the fact that this method creates 50 `Metadata` instances, with each instantiation consuming ~4ms, and adding up to over 200ms.

The resolution to this would be to modify that method to simply store the configuration provided, and change `get()` to create the `Metadata` instance on the fly (if it's not already present).