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

ApplicationEventRouter is a per application class dispatching events sending to
the application. It will be created when an application is loaded. It also
provides lazy events support.

ApplicationEventManager is the service class managing all application event
routers.
[Runtime] Add application event router unittest