Can now distinguish between local vals/vars

The problem was that we're unifying val/var fields by always
comparing the getter symbol. The getter symbol of a local val/var
is NoSymbol, hence it would always return true, since
NoSymbol == NoSymbol.

The fix is simple. If it's a local val/var we need to treat it
differently than a val/var field, and simply compare the using the
isSameSymbol logic.

Fixes #1001775
UI Code for type-hierarchy view

This PR is a bit messy, sorry about that. I had to change some of the
main abstractions used to pass information between the SearchPresentationCompiler
and the rest of the code.

- We now have our own little abstraction for Scala entities called Entity. It
  simply represents a Scala enity (Type, Class, Trait, etc) and a Location where
  the entity was spotted.
- Before we used Hit/PotentialHit to represent the result of checking a single
  occurrence to see see if it matched the entity we were looking for. This has
  been changed to a more generic container called Confidence (Certain/Uncertain)
  which in the case of finding occurrences contains a Hit. In the case of finding
  subtypes it contains a TypeEntity.

Fixes #1001764
Remove 'contextId' from type hierarchy binding

The 'contextId' is used to restrict the "scope" of a binding. In
this case I used it to make sure that our type hierarchy could
only be invoked from inside a scala editor. But someting whent
fishy and the key binding would only work for the first invocation

I have a feeling this might have something to do with the fact that
the Scala editor isn't a real scala editor yet but a little
aspect hack.
Type Hierarchy now shows super-types

The Finder can now find super-types of a given type. This is
currently restricted to super-types that are defined in the
project, as is also the case for sub-types.

Fixes #1001759