[backport] Allow lazy vals without await in the initializer

We were incorrectly typechecking the `ClassDef` of the state machine
in the macro in a way that discarded the resulting trees, and only
kept around the symbol.

The led to the the macro engine retypechecking
that node, which somehow led to duplicated lazy val initiaializer
`DefDef`-s in the template, which manifest as a `VerifyError`.

This commit:

  - rescues the typechecked `ClassDef` node from the eager
    typechecking by the macro
  - loosens the restriction on lazy vals in async blocks. They are
    still prohibited if they contain an await on the RHS
  - Adds a test that shows evalution is indeed lazy.

(cherry picked from commit cc4587b1985519f7049d0feb0783d8e22c10f792)

Conflicts:
	src/main/scala/scala/async/internal/AsyncAnalysis.scala
	src/main/scala/scala/async/internal/AsyncTransform.scala
Incorporate pull request feedback

  - remove unneeded `setType(NoType)`, which was leftover from my
    first attempts to find this bug.
  - fix typo in error message
  - optimize imports

(cherry picked from commit 5c6ea29966fa80faae13892da50fc68ed1bf9ae7)
Merge pull request #69 from retronym/backport/ticket/52-lazy-val

[backport] Allow lazy vals without await in the initializer