feat(transpiler): constructor and typed field semantics

fixes #11 (constructor and typed field semantics)
fixes #42 (Should we infer class property types from ctor args ?)
fixes #17 (number (js) should map to num (dart))

I am also looking for a general feedback on this PR: there is quite some refactoring in this PR to conform more to the Traceur architecture. IMO it makes the code easier to maintain long-term, feedback is welcome.

Difference with the original ticket (#11): `@FINAL` is not implemented. All fields are declared final if the ctor is const. If the ctor is not const, no fields will be final. I see little value in this annotation at least for now.

One thing that could be improved is that field must be initialized with a constant expression in Dart (for const ctor). This is not enforced right now but there is a TODO in the code. I think this could be implemented at a later point in time.