type5 is much more first principles based, so we get a lot
of weird quirks removed:
- FromLiteral no longer needs to understand AST
- Type unifications works more like Haskell
- Function types are just ordinary types, saving a lot of
manual busywork
and more.