* lang_js/parsing/parser_js.mly: moving stuff around
[hackjs] support for types a la typescript in the grammar

Summary:
For now we stick with typescript but we can change that later.
It's just a prototype.

Test Plan: unit test included

Reviewers: avik, jeffmo

Reviewed By: avik

Differential Revision: https://phabricator.fb.com/D997418
[hackjs] support for types in AST and use records instead of long tuples

Test Plan:
$ ~/pfff/pfff -dump_js type.js
[FunDecl(
   {f_tok=Some(()); f_name=Some(("foo", ()));
    f_params=[{p_name=("str", ()); p_type=Some(((), TName(("string", ())))); };
              {p_name=("i", ()); p_type=Some(((), TName(("int", ())))); }];
    f_return_type=Some(((), TName(("string", ()))));
    f_body=[St(Return((), Some(V(("str", ()))), Some(())))]; });
 St(Nop(None)); FinalDef(())]

Reviewers: avik, jeffmo

Reviewed By: avik

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