refactor: Refactor test setup.

Befor each test, a div element with attribute ng-app, is created. This is a container into which test can put some content. This container is destroyed after each test
feat(EventHandler): EventHandler exposes method to register a callback.

EventHandler exposes and API to register a callback programatically.
InputSelect is the first component to utilize that API for handling
change event.
feat(EventHandler): Expose EventHandler API to walk dom tree and execute attached callbacks.

walkDomTreeAndExecute method is exposed by EventHandler. It's primary purpose is to allow TestBed.triggerEvent
method to emulate bubbling. This in turn allows writing tests which use EventHandler but tests don't need to use
document.body in order to exhibit event propagation. This should result in faster test execution time.
refactor(NgModelSelectSpec): Refactor tests to use the new event bubbling API
refactor(EventHandler): EventHandler can release all registered listeners.

Added method `releaseListeners` to release all registered listeners.
refactor(NgEvents): NgEvents use EventHandler.