Build maintainence

 - Update to SBT 0.12.4
 - Update to Scala 2.10.2
 - Provide a means to disable test compilation (other then TreeInterrogation)
   This is handy when doing major renovations to the macro implementation.
 - Explicitly depend on scala-compiler (we'll need that in the next commit)
 - Declare the dependencies on scala-{reflect, compiler} as "provided" to avoid
   adding them the runtime classpath of upstream projects. They are only needed
   at compile time.
Avoid hardcoded "2.10" in tests.

This allows us to cross build against 2.10.x and 2.11.x.
An overdue overhaul of macro internals.

 - Avoid reset + retypecheck, instead hang onto the original types/symbols
 - Eliminated duplication between AsyncDefinitionUseAnalyzer and ExprBuilder
   - Instead, decide what do lift *after* running ExprBuilder
   - Account for transitive references local classes/objects and lift them
     as needed.
 - Make the execution context an regular implicit parameter of the macro
 - Fixes interaction with existential skolems and singleton types

Fixes #6, #13, #16, #17, #19, #21.
Fix another interation with existentials and a name clash.
Move implementation details to scala.async.internal._.

If we intend to keep CPS fallback around for any length of time
it should probably move there too.
Fix "BoxedUnit cannot be cast to String" error.

When convering If and Match nodes to ANF, set the type to Unit.
Otherwise, erasure might end up casting BoxedUnit to a real type.
Comply with range position checking.

 - Make sure all trees are positioned
 - Mark range positions for synthetic code as transparent to allow
   some wiggle room for overlapping ranges.

Enables -Yrangepos for our test suite. We can't add it for
the entire build until the fix for SI-7649 lands in the compiler.
Support await in throws.

Also support AsyncId.async[Nothing], which was triggering a NPE
in the generated `null.asInstanceOf[Nothing]`.
Support await in Typed nodes.
Test case for await in an Assign node.

This case already works.
Preserve ApplyImplicitView / ApplyImplicitArgs in AnfTransform.
Disallow await in pattern guards (for now)
Set the type of case bodies to Unit after ANF.

Avoids runtime errors like: "java.lang.Double cannot be cast to scala.runtime.BoxedUnit"
Remove obsolete TODO comment.
Remove unneeded special case in ANF transform.

Obsolete now that we carry all the types around.
Don't set the body of If to the original type.

Tweak the way we set tpe = Unit in matches.
Merge pull request #27 from retronym/topic/typed-transform-2

Typeful transformations