sgrep/spatch: basic support for ocaml

Summary:
I need to refactor some big parts of the AST of PHP and a
spatch for ocaml could be helpful.

Test Plan:
$ ~/pfff/sgrep -lang ml -e 'let $F' foo.ml
foo.ml:1
 let x = f 1
foo.ml:3
 let y = f 2

Reviewers: pieter

Reviewed By: pieter

CC: julienv, amenghra

Differential Revision: https://phabricator.fb.com/D817354
* main_sgrep.ml: use skip list
* tests/ml/sgrep/foo.ml: example
* tests/fuzzy/spatch/constructor.exp: support
* tests/ml/spatch/foo.spatch: handled
* lang_php/parsing/parser_php.mly: removed syncweb marks :(
pfff/php: big cleanup of the grammar part1

Summary:
There are currently 3 parsing errors in www on code like foo()[2]->method().
The pfff grammar has 7 shift/reduce conflicts. The grammar
has gradually become ugly and hard to extend. Same for the AST.
I used to follow exactly the Zend grammar,
even when it looked stupid because of many special cases, but now,
with the many extensions we've added, it's time to rewrite the grammar
(and AST) with more orthogonal rules which by side effect should avoid
the many parsing errors and special cases.

The next diff will attack the expr/lvalue grammar rules, which
are the messiest, but for now I wanted to cleanup all the rest.

- removed some useless intermediate rules
- removed %start rules not used
- factorized trait_declaration_statement with class_declaration_statement
- explain in conflicts.txt impossibility to factorize things withtype_opt
- ext_type_hint -> type_php and simplification of type_php
- factorize some rules
- ident vs qualified vs name
- many more stuff

Btw here are some stats about our different PHP parsers:

  pfff:
  180 terminals, 191 nonterminals
  625 grammar rules, 1118 states
  7 s/r conflicts

  hack:
  132 terminals, 83 nonterminals
  329 grammar rules, 663 states
  3 s/r conflicts

  hphp:
  ? terminals, ? nonterminals
  710 grammar rules, 1329 states
  2 s/r conflicts

  xhpast:
  ? terminals, ? nonterminals
  584 grammar rules, 1144 states
  12 s/r conflicts

Test Plan: make test

Reviewers: pieter

CC: julienv, amenghra, jdelong

Differential Revision: https://phabricator.fb.com/D815823
* lang_js/parsing/parser_js.mly: estet
* tests/php/parsing/assign_new.php:
* tests/php/parsing/cast_vs_param.php:
* tests/php/parsing_errors/return_type_extension.php:
* lang_php/parsing/flag_parsing_php.ml: show_parsing_error_full
* lang_php/parsing/ast_php.ml:
pfff/php: big cleanup of the grammar part2

Summary:
It can now parse 100% of www. I'm down to 1 s/r conflict (with
collections).

I removed lots of stupid grammar rules. I'm down from
180 terminals, 191 nonterminals
625 grammar rules, 1118 states
7 s/r conflicts

to
178 terminals, 146 nonterminals
530 grammar rules, 951 states
1 s/r conflicts

(hphp has:
710 grammar rules, 1329 states
2 s/r conflicts
)

Test Plan:
./pfff -parse_php ~/www => 100%
(it used to have 3 parse errors on code like
$foo->method()['fld'](1)->method().

Reviewers: pieter

CC: julienv, jdelong, andrewparoski, amenghra

Differential Revision: https://phabricator.fb.com/D816453
* lang_php/parsing/ast_php.ml: start of unify lvalue and expr
lvalue new type and lvalue2.
CEs on lvalue and lvalue2
* lang_php/parsing/ast_php.ml: class_name_reference2
* lang_php/parsing/: CE class_name_reference
* lang_php/parsing/ast_php.ml: Cr of
CEs on Cr