Improved exceptions and reporting exceptions for command-line compiler.

ParseError, DeclarationError, and TypeError could share the same exception handling logic, perhaps implementing printSourceException which calls printSourcePart. Probably not pertinent now; ParseError is preventing the collapse of catch blocks (the logic catching these exceptions is very similar).