bug(transpiler): Support optional arguments in annotations.

Clean-up: move annotaitons out of fixtures/annotations, since we have
the @CONST annotation in the transpiler already.
feat(transpiler): Transform template strings to triple quoted Dart strings
docs(di): simple typo
fix(lang): fix small typo.
feat(compiler): initial version of the compiler.

Supports:
- binds text nodes, element properties and directive properties
- locates decorator, component and template directives.
- inline templates of components

The compiler is built using a pipeline design,
see core/src/compiler/pipeline package.

Integration tests to show how the compiler, change_detection and DI work
together:
core/test/compiler/integration_spec.js
fix(transpiler/dart): re-exporting only some bindings

```
export {Foo, Bar} from ‘./foo’;
==>
export ‘./foo’ show Foo, Bar;
```
feat(transiler/dart): re-export imported vars

```
import {Foo} from ‘./foo’;
var localVar = true;
export {Foo, localVar};

===>

import ‘./foo’ show Foo;
export ‘./foo’ show Foo;
var localVar = true;
```

Closes #41
refactor(ElementInjector): support components

- Allow to access containing component directive instance from the shadow DOM.
- Allow to access app services of the app level injector of the component
  when the component is instantiated.
fix(BaseException): Support stack traces in BaseException
refactor(ElementBinder): Store componentDirective and templateDirective as well.
fix(compiler, view): centralize TemplateElement checks and fix inconsistencies

Fixes #189
Closes #194
refactor(annotations): replace Module functions with plain lists.

Renames:
elementServices -> shadowDomServices.
feat(change_detection): add support for binary operations and literals
feat(change_detector): add support for formatters
feat(change_detector): add support for method calls
feat(change_detector): add support for negate
feat(change_detector): add support for ternary
feat(change_detector): add support for array literals
feat(change_detector): add support for map literals
feat(change_detector): cleanup