sgrep: basic support for metavariables [1/2]

Test Plan: ./sgrep -test

Reviewers: pieter

Reviewed By: pieter

CC: ptarjan, adonohue

Differential Revision: https://phabricator.fb.com/D812277
* matcher/unit_matcher.ml:
* matcher/fuzzy_vs_fuzzy.mli:
* h_program-lang/ast_fuzzy.ml:
sgrep: basic support for metavariables [2/2]

Summary:
With this diff, metavariables are added in an environment
and mulitple use of the same metavariable are compared,
a bit like in Prolog.

Test Plan: make test

Reviewers: pieter

Reviewed By: pieter

CC: ptarjan, adonohue

Differential Revision: https://phabricator.fb.com/D813640
* lang_php/matcher/unit_matcher_php.ml: misc
sgrep: more unit tests

Summary:
ported most of the unit tests of sgrep_php in unit_matcher_php.ml
to the generalized sgrep in unit_matcher.ml.
Many of them pass :)

Test Plan: make test

Reviewers: pieter

Reviewed By: pieter

Differential Revision: https://phabricator.fb.com/D813850
sgrep: better support for matching expressions in arguments

Test Plan: ./sgrep -test

Reviewers: pieter

Reviewed By: pieter

Differential Revision: https://phabricator.fb.com/D814245
comments in ast_fuzzy
* h_program-lang/ast_fuzzy.ml: comments
more comments