Simplify parser

This is still something of a work-in-progress - there's more that could be done - but it makes sense to merge in the changes so far since it breaks nothing (AFAIK!) and removes a ton of code.