cmf: support foreach(... as list(...)), refactor existing AST, part1

Summary:
To prepare for the 'foreach(... as list(...))' extension I need
first to reorganize a few things.
Next patch will add the ForeachList pattern and
fills some of the Todos.

Test Plan: make test

Reviewers: jiaol, pieter, julienv, amenghra, zoel, glevi

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

Task ID: 2745014
cmf: support foreach(... as list(...)), extended grammar, part2

Test Plan:
unit test included
$ ~/pfff/pfff -parse_php foreach_list.php

Reviewers: jiaol, jdelong, andrewparoski, julienv, amenghra, zoel, glevi, pieter

Reviewed By: jdelong

CC: ps

Differential Revision: https://phabricator.fb.com/D934566
* lang_php/analyze/foundation/abstract_interpreter_php.ml: CE foreach_pattern
cmf: support foreach(... as list(...)), simplify ast_simple, part3

Summary:
We can simplify even more ast_php_simple.ml to decompose
the array arguments and foreach arguments in a separate Arrow
constructor to factorize code. Maybe I'm going to far
in the simplification though ... I used to go the other
extreme and have super specific AST constructors, and now
I use less and factorize things (lvalue = expr = foreach_pattern = array_value).
Not sure what is the best, but the spirit of ast_php_simple
is to simplify so let's be consistent.

Test Plan: make test

Reviewers: pieter, jiaol, julienv

CC: platform-diffs@lists

Differential Revision: https://phabricator.fb.com/D934797
pfff: handle 'async'

Test Plan:
unit test included
make test
also pfff -parse_php ~/www/ now works.

Reviewers: glevi, julienv, pieter, jiaol, amenghra, jdelong

Reviewed By: jdelong

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

Task ID: 2769788