JS parser support for object method types

Summary:
The JS parser now understands object method types in addition to object field types.
For example, we can now write { ... f(x:string):number; ... } (a la TypeScript)
in addition to { ... f: (x:string)=>number, ... }

The former style also accommodates generic types (see test).
Unfortunately, the latter style does not, causing conflicts with JSX.
This is fine, since TypeScript signatures prefer the former style.

Since method types no longer benefit from colon separation between
identifiers and their types, they may also conflict with other expression forms.
In particular, we need to weaken the form of nominal types.
This is also fine, since TypeScript also enforces restrictions on nominal types.

Test Plan:
make tests
./pfff -parse_js ~/www/

Reviewers: pad

Reviewed By: pad

CC: bhosmer, bryano

Differential Revision: https://phabricator.fb.com/D1260979