Merge changes

I'm not sure if we want to merge all this before the new release.
There's a lot of changes here to give better error messages.
I've also started working on a new compiler backend written in Mirah, but it has to be built by hand right now so it shouldn't affect anything.