Fixing annotations

Two fixes:

1) Annotation#symbol now returns the correct annotations for classes as well as traits.
2) Typer copies annotations from Modifiers to Symbols
Fix lazy vals tests broken by previous commit.
Port LazyVals to use hasAnnotation.

Instead of by-hand testing of modifier type.
Merge pull request #118 from dotty-staging/fix/annotations

Fixing annotations
Helper methods for deriving trees.
SymDenotation.isEffectivelyFinal

Helper method that tests weather this particular
SymDenotation cant have overrides: eg if it's defined in module class,
if it is inner method, if it is method of anonymous class, etc.
Allow closures to take type parameters.

This shouldn't require any changes to backend,
as all type parameters will be erased in erasure

Conflicts:
	src/dotty/tools/dotc/core/Symbols.scala
Sbt: simplify debugging and tracing
TailRec phase and tests for it.

Ported tailcall phase from scalac with such changes:
  - all transformation is done in the phase itself
     (previously half of the work was done in backend)
  - it is now able to run before uncurry
  - it is now a treeTransform
  - renamed to tailrec to make it more obvious that
     this phase transforms only recursive calls.

For now this is a single phase which speculatively
transforms DefDefs.
Speculation can be potentially removed by
splitting into 2 phases:
  one detecting which methods should be transformed
  second performing transformation.

But, as transformation requires as same amount of work
as detection, I believe it will be simpler to maintain
it as a single phase.

Conflicts:
	tests/pos/typers.scala