Introduced a mechanism to selectively override the java implementation
of Rascal library functions when called from compiled code. Solves #474

Some library functions need special treatement when called from compiled
code. In most cases this concerns the use of IEvaluatorContext provided
via the @reflect{} tag. A typical example are the parse functions as
observed in #474.

Therefore we provide now special treatment for selected Java classes. A
Java class X.java (that is mentioned in some @javaClass{X} to implement
a Rascal library function) can be extended with a class XCompiled.java
and all calls are then first routed to XCompiled.java that can
selectively override methods. The compiler checks for the existence of a
class XCompiled.java so this overriding mechanism is automatically
activated when a file XCompiled.java is created.
Complete overhaul of the parsing architecture

In order to allow the library function parse to call the compiler's
parsing infrastructure, some global interface changes were needed.

In particular, parses are now all cached on the value of their start
symbol (rather than on module name).

There are still some unused module names passed around that have to be
removed.