Got rid of SharedTree
Tree Transformer&TreeTransform:
1) using fast tracks in case node type isn't altered by Transformation;
2) using pre-computed hints(nxTransformXXX arrays) to quickly jump to next transformation interested in transforming particular Tree type;
3) using pre-computed hints(nxPrepareXXX arrays) to know which transformations are going to 'prepare' for transforming particular Tree type;
4) recomputing those hints in case some transformation changed implementation class during 'prepare';
5) TreeTransform is now responsible of calling transformFollowing on nodes created by it.
Merge pull request #43 from DarkDimius/tree-transformer

Tree transformer&TreeTransform
Merge pull request #45 from DarkDimius/noSharedTrees

Get rid of SharedTree
Made TypeBoundsTrees to be TypTrees so they are eliminated by PostTyperTransform
Fix problem in TermRef.alternatives

Rewrap needs to produce alternatives with signatures. Otgerwise the new denotation will simply overwrite the old because both the overloaded TermRef and the alternative will hash to the same unique TermRef.
Fix problem comparing overloaded TermRefs

Overloaded TermRefs do not have an info, and consequently do not support =:=. Yet in Typer#checkNewOrShadowed we compared termrefs with =:=. This gives an exception if the termrefs are overloaded. The fix is to provide a new method isSameRef in TypeComparer which is called instead of =:= in Typer#checkNewOrShadowed.
Added test for overloaded access with import/inheritance conflict
Fix of accidental omission in TypeComparer
Removed useless ValDef flagged by @samuelgruetter in previous pull request
First step towards Typer Reorganization.

Goal is better modularization and avoiding code duplication and divergence between Typer and tpd. As a first step, we split Inferencing into Inferencing, Checking, and ProtoTypes. Inferencing and Checking become Typer traits, while ProtoTypes remains a global object.

Eventually:

 - we want to have a SimpleTyper, which does the main stuff in tpd, and can mixin either full checking or no checking. Each method in SimpleTyper takes an untyped tree (which is assumed to have typed arguments) and adds a toplevel type to that tree. The methods subsume the type-checking parts in Typers, except for
(1) simplifications and expansions (2) computing prototypes and recursing with them into childtrees (3) adaptation. The method calls the necessary checking operations, which may however be stubbed out.

The idea is already exercised in the typechecking code for Literal and New, except that for now it calls methods in tpd (they will become methods in SimpleTyper instead).

 - Typer should inherit from SimpleTyper, and forward all logic except for (1) - (3) to it.

 - tpd should call the simple typer it gets from ctx.typer

 - ctx.typer should be a SimpleTyper, not a complete one.
Scond step to typer reorg: Introduce TypeAssigners.

TypeAssigners assign a toplevel type to a node. They are mixed into Typer, and can be accessed from tpd using
ctx.typeAssigner.
Main Typer reorg.

Common code between tpd and Typer has been factored out into class TypeAssigner.