Refactor visitor exceptions

* BasicTransformer is renamed ParseForestTransformer, and is to be used only for parse forests
* TransformerException is renamed ParseFailedException, and is to be used only to signify that the current parse tree in a parse forest should be pruned. In cases where an empty parse is not acceptable, the user should always call TransformerException#report() to terminate the application if the parse failed all the way to the top.
* CopyOnWriteTransformer no longer throws any checked exceptions.
* Some minor changes were made to code which violated the above mentioned principles.