type parameter inference

Infers type parameters of template functions from their arguments.
Now we can write
```
var a = [1,2,3];
a.map(function (i : number) {
    return i * i;
});
```
instead of
```
a.map.<number>(function (i) {
    return i * i;
});
```