Initial commit. Note that the implementation of types.hs is a bit odd at
the moment, it's all using type aliases with no type classes at
all (even though quite a few could be added). For the moment I will
leave it. The immediate concern right now is to get some backends.