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.
It will see a signature like `(): false` and then try to look for a `=>` or `{`, but won't find one, so it'll fail.