[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.

EventObserverRegistrar is the event registration helper class for user to
reg/unreg observer for an event of an application. It will detach from all
previous attached events when destruction.

ApplicationEventRouter 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
and dispatch events to routers.
[Runtime] Add application event router unittest