C++: Fixes for the OME-XML model and metadata store interfaces

- Default interface implementations moved into and `ome::xml::model::detail` namespaces, as for `bioformats::detail`
- Made all interface classes into "proper" interfaces (as documented in the commit logs)
- Made all interface implementors behave properly (again, as documented)
- Replaced use of `new` to `std::make_shared` for increased clarity and safety.

Just to point out something for review: The `FilterMetadata` class did not have a `virtual` destructor.  For any class which is potentially referenced only via a polymorphic base e.g. `std::shared_ptr<MetadataStore>` for this class, a virtual dtor is vital, so unless a class is never ever going to be subclassed, this is vital to pick up.  If it's omitted, the most derived dtors will never run, and this will leak memory and cause other problems.