parse x [:: ann] = e
option to unlink what raco did
add x = e as a binding form

Implementation:

- Exactly the same as letrec except in static checking
- Typechecker now complains if =-bound identifiers are assigned to
- Typechecker ensures the same name isn't both an identifier and a variable
- Shadowing is allowed, but multiple names in the same context are not
better error messages, and use immutables more often in desugar