Provide syntax for type lambdas.

This is a squashed version of the commits from #70.
This should be `freshTypeName("L$")`, otherwise:

```
scala> { type L1 = Int; type T = [_] => L1 }
<console>:8: error: illegal cyclic reference involving type L1
              { type L1 = Int; type T = [_] => L1 }
                                               ^
```