Introduce codeGen compiler phase 

I think it's time to merge this into master. The separate codeGen phase is panning out nicely and should make a good basis for dropping the surface-level type encoding (we're almost there!).

Option handling is cleaned up and the long-standing Option-related issue #29 finally fixed.

Review by @cvogt