Added a JVM runtime shutdown hook to ensure that unless the JVM process
is killed forcibly, the JVM should attempt properly shutting down the
Simantics platform, even if the client code that started the platform
fails to do so for any reason.
Also marked both SimanticsPlatform.{startUp,shutdown} synchronized to
prevent concurrent access to either the start-up or shutdown logic.