Improved lookahead for arrow functions.

Fixes issue #34.

Specifically:
* We no longer automatically assume "()" is a function expression. It must be followed by an arrow, colon, or curly brace.
* If an arrow is missing following a signature, but a curly brace is present, we assume the user forgot the arrow and try to parse the body anyway.
looks good.  could you add a comment here why having a colon isn't enogh.  i.e. the ambiguity with:

a ? (b) : ...
thanks!