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.

Here's the new key classes that should be reviewed related to the Type Hierarchy view code.

- [TypeHierarchyNode](https://github.com/scala-ide/scala-search/pull/62/files#diff-13)
- [TypeHierarchyContentProvider](https://github.com/scala-ide/scala-search/pull/62/files#diff-20)
- [TypeHierarchyTreeLabelProvider.scala](https://github.com/scala-ide/scala-search/pull/62/files#diff-21)
- [TypeHierarchyView.scala](https://github.com/scala-ide/scala-search/pull/62/files#diff-22)

And this is related to the new abstraction

- [Confidence](https://github.com/scala-ide/scala-search/pull/62/files#diff-8)
- [Entity](https://github.com/scala-ide/scala-search/pull/62/files#diff-4)

Most of the rest is just refactoring to fix the new abstractions. 

I'll keep the changes smaller in the future, but hopefully I won't need to refactor this much again in the near future ;)