implement default parameters (#199)

Please review this branch. The phase of the resolution process is ClassDefinition#analyze().

* A function with default parameters `function f(a : number, b : number = 42) :void` is just a syntactic sugar to define a wrapper function `function (a : number) : void { this.f(a, 42); }`. Thus, default parameters can include `this`
* A default parameter cannot precede a required parameter
* Type annotations *are* required in this impl not to reduce grep-ability