Fixed unmatched free() / delete / delete [] regarding loadPNG
Made the scope of BaseEngine controllable. Will need changes in applications.

The BaseEngine will need to be instanciated this way before calling
BaconBox::Engine::application(...);

	BaconBox::BaseEngine engine = BB_ENGINE_IMPL;
	BaconBox::Engine::setInstance(engine);
Fixed how I used isEnabled() in UIManager.cpp

Fixes a possible NULL pointer dereference.
Actually fixed the way the Engine is scopable.

I do not know how it built before, since it did not.
Made BaseEngine register itself to Engine.
Beginning of the implementation of the new Singleton pattern.

First, it makes all the Singletons use a unique and common pattern.

The new Singleton pattern switches who's in charge of the Singleton.
The instance itself manages itself, the generic ones are now more
like proxies with which the calls will eventually fall back on the
implementations.

Furthermore, we can now control the lifecycle of those Singletons.
They are instanciated whenever they are needed, registered by
themselves and destroyed in reverse order of their instanciations.
Merge branch 'develop' of github.com:anhero/BaconBox into develop
Fixed Singleton for SDL version.
Merge branch 'develop' of github.com:anhero/BaconBox into develop