Changed implementation of MO5.tools.getUniqueId().
Added module system and arious changes:

- MO5 object is now a module loader that works like this:
    MO5("MO5.Map", "MO5.Result").define("MyModule", function (MyModule) {
        /* ...  */});
    MO5("MyModule").run(function (MyModule) { /* ... */ });

- All files have been wrapped into modules. The old namespace system
    is now obsolete.

- Changed name of MO5.Object to MO5.CoreObject.

- Added MO5.EventBus which is a port of Squiddle and replaces the dependency.

- Added MO5.ajax() which is needed to load modules asynchronously. It is
   public method on the MO5 object, but also has a module wrapper.

- Added an implements() method to CoreObject which checks whether the
   CoreObject instance's API satisfies the given interface. Checks both
   methods and members.

- Removed the private properties from CoreObject and instead added a
   flag feature with hasFlag([string]), setFlag([string]) and
   removeFlag([string]).

- Removed MO5.Promise because it was only needed by MO5.Result and had
   a circularly dependent relationship with it which doesn't work well
   with module systems.

- Re-named MO5.Error to MO5.Exception so that you can use it by its name
   in the module system without shadowing the global Error constructor.
Changed README.md to reflect recent changes.
Removed some old files.