Refactoring

Simplified the implementation greatly! We're now using the Entity
abstract much more. It hides the presentation compiler while still
giving the user many of the features we need from symbols; in a
safe manner.

Before we often passed locations back and forth between the
SearchPresentationCompiler and the client code, even when
there wasn't really any reason for this.

Now we create instance of Entity based on Symbols which allows
us to show information from entites that aren't defined anywhere
in the sources.

Ideally we want to never expose SearchPresentationCompiler to the
user.