[Model Metadata] Add Metadata element to Model

* Also Unit Tests
[Model Metadata] Add convenience method and refactor unit tests

* Check for existing entry by key and set value if it exists
Merge branch 'model-metadata'
[Unit Tests] Move tests to impl package