[Runtime] Add runtime model event core classes

There are two event types for runtime model which are different from ordinary
DOM events(see http://www.w3.org/2012/sysapps/app-lifecycle): application
events which are events send to application indicate what’s happening to the
application, like launch, terminate, suspend and etc; system events which are
events sent by the system, a system event can wake up a terminated application.
This patch introduces some core classes to register and handling such events.

Implementation details:
EventObserver is a base class for observing runtime model events, user can
derive from it on any thread. The EventFinishCallback can be called
asynchronously when the observer finishes its event handling.

AppEventRouter is a per application class dispatching events sending to the
application. It will be created when an application is loaded.

ApplicationEventManager is the service class managing application event routers.
It also provides lazy event support.
[Runtime] Add application event router unittest