LazyVals phase.

Creates accessors for lazy vals:
1) lazy local vals are rewritten to dotty.runtime.Lazy*** holders
2) for a non-volatile field lazy val create a non-thread-safe accessor and flag:
2.a) if lazy val type indicates that val is not nullable, uses null value as a flag
2.b) else uses boolean flag for sake of performance, method size, and
allowing more jvm optimizations
3) for a volatile field lazy val use double locking scheme, that guaranties no
spurious deadlocks, using long bits as bitmaps and creating companion
objects to store offsets needed for unsafe methods.

Conflicts:
	test/dotc/tests.scala
Allow MiniPhase to be DenotTransformer

All MiniPhases now start as full-fledged phases,
and are given their own periods and can register DenotTransformers.
Consecutive MiniPhases will be squashed automatically, to force
separation into multiple phases Separator should be used

Conflicts:
	test/test/transform/CreateCompanionObjectsTest.scala