Removed the templated Singleton class and manually replaced the Log, NotificationCenter and Timer singleton logic.

You cannot create a cross-library singleton class properly using templates. You will always end up creating duplicate singleton instances across shared library boundaries on Windows. Therefore, you need to manually build the singleton implementation directly inside the library class and not in the header. The ensures that the library creates the singleton instance regardless of what other library or application logic is calling the method.
Fixed up some compiler errors in the bumpTimer example since the TIMER() macro has been removed.
The bump::NotificationCenter methods are now all thread-safe.