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.
this is bad.  it's clearly a lambd, but we're giving an error about a missing paren.   (a: should always trigger arrow function parsing.