Use beautiful unicode identifiers.

This commit changes the way type lambdas are encoded.
Currently, the encoding looks like this:

Function2[?, Int, ?] becomes:
  ({type L_kp[X_kp0, X_kp2] = Function2[X_kp0, Int, X_kp2]})#L_kp

With this commit, it would instead be:
  ({type Λ[α0, α2] = Function2[α0, Int, α2]})#Λ

Benefits of this change:

1. Encoding looks better.
2. Error messages are much cleaner.
3. Closer to existing community conventions.

Drawbacks to this change:

1. Requires users to be able to display unicode.
2. Complicates using types named "Λ", "α0", etc. with kind-projector.

Overall, I think this would be a win, but I'll have to canvas opinions.