Broke up parsing code into multiple files.

This is mainly just organizational, so people don't have to scroll through
one enormous file to find the part of the parsing code they're looking
for.

Also changed ParseError class to carry an error message with it.