feat(components): add support for CSS encapsulation to transcluding components

* Extract ComponentCssLoader so it can be shared by ShadowDomComponentFactory and TranscludingComponentFactory
* Implement a CSS transformer similar to the one provided by Platform.JS. 
* Rename EventHandler into ShadowBoundary
* Rename WebPlatform into WebPlatformShim and provide two implementations: one based on platform.js and the other one built into Angular.


TODO:
- [x] Refactor ShadowDomComponentFactory#call and TranscludingComponentFactory#call.
- [x] Test ShimmingViewCache in isolation. At the moment it is tested indirectly. 
- [x] Test the default shim

Includes #1304 
isn't that going to produce the same error as we have with platform.js, ie selector could be `tag[attr]`