Components + Lifecycle callbacks

This is a combined verrsion of #280  and #281 

This branch also introduces a much better support for manually starting and stopping Components.

for reference, here is the example that I originally used in #281:

 
**aura-extensions/make-it-red.js**

    define(function() {
      return function(app) {
        app.core.registerComponentCallback("after:initialize", function() {
          app.core.util.invokeWithCallbacks('render', this);
        });

        app.core.registerComponentCallback("before:render", function() {
          console.warn("About to render a Component: ", this.options.name);
        });

        app.core.registerComponentCallback("after:render", function() {
          this.$el.css({ color: 'red' });
        });
      };
    });