Merge pull request #91 from retronym/ticket/86-mkZero

Avoid assigning null to vars of derived value type
Avoid unbounded stack consumption for synchronous control flow

Previously, as sequence of state transitions that did not pass through
an asynchrous boundary incurred stack frames. The trivial loop in
the enclosed test case would then overflow the stack.

This commit merges the `resume` and `apply(tr: Try[Any])` methods into
a `apply`. It changes the body of this method to be an infinite loop
with returns at the terminal points in the state machine (or at a
terminal failure.)

To allow merging of these previously separate matches, states that
contain an await are now allocated two state ids: one for the setup
code that calls `onComplete`, and one for the code in the continuation
that records the result and advances the state machine.

Fixes #93
Remove extraneous method in generated code.
Make `f(await(completedFuture))` execute `f` synchronously

A worthy optimization, suggested by @danarmak.

Closes #73
Merge pull request #98 from retronym/ticket/73

Make `f(await(completedFuture))` execute `f` synchronously
Merge remote-tracking branch 'origin/2.10.x' into merge/2.10.x-to-master-20141219

Conflicts:
	src/main/scala/scala/async/internal/AsyncTransform.scala
	src/main/scala/scala/async/internal/ExprBuilder.scala
	src/test/scala/scala/async/TreeInterrogation.scala
Merge pull request #99 from retronym/merge/2.10.x-to-master-20141219

Merge/2.10.x to master 20141219