generic preprocessor-specific exception classes

These are basic python Exception subclasses that can be used to throw
more specific errors and exceptions from within the preprocessor.

AssertionError is not a good idea.
replace an assert in macro_translator

Use a MacroException instead of an AssertionError.
fix "raise Exception" formatting in preprocessor
raise MacroException instead of Exception

A more specific exception means that error handling can actually work in
the future.
convert a macro_translator assert in preprocessor

AssertionError -> PreprocessorException
make a MacroException more verbose in preprocessor
Merge branch 'master' into preprocessor-asserts
Merge pull request #182 from kanzure/preprocessor-asserts

Use PreprocessorException instead of AssertionError in preprocessor