SMs: Adjust to rest of library
Repo: Add getter for sm-names and check sm existance
Remove requirement to open/close Sub-Repositories

The old approach was, that one had to call open() on a Submodule before
being able to access subRepository() and to call close() when done with
it.

This approach turns the referencecounting around: Submodule's
subRepository() just opens the repository when required. Repository then
knows about where it came from and keeps a reference there (which in
turn keeps a reference to the superproject's Repository). When the sub-
Repository goes out of scope, it will release the submodule from the
automatic part of the ~RepositoryPrivate(), but will first remove the
backwards reference from SubmodulePrivate.

This way, opening and closing the Repository becomes totally transparent
to the consumer code.