[hack] inout parameters: declaration parsing
[hack] inout parameters: declaration parsing

Summary:
Detailed specification: https://fb.quip.com/3utHAy5kEs8z

Implement support for inout parameters on function declaration headers in Hack's legacy parser. The feature is considered experimental and requires adding `inout_params` to the `enable_experimental_tc_features` directive of .hhconfig.

We check the following constraints:
* inout parameter isn't passed by reference
* inout parameter doesn't have a default value
* variadic parameter isn't marked inout

Reviewed By: andrewjkennedy

Differential Revision: D5996766

fbshipit-source-id: 75417d99768647b2190fc54f16a3f55cb6770373

jamesgpearce/flow,jamesgpearce/flow,nmote/flow,nmote/flow,jamesgpearce/flow,samwgoldman/flow,JonathanUsername/flow,facebook/flow,mroch/flow,jamesgpearce/flow,ylu1317/flow,facebook/flow,samwgoldman/flow,AgentME/flow,facebook/flow,jamesgpearce/flow,facebook/flow,AgentME/flow,nmote/flow,gabelevi/flow,mroch/flow,popham/flow,facebook/flow,JonathanUsername/flow,ylu1317/flow,facebook/flow,mroch/flow,TiddoLangerak/flow,popham/flow,ylu1317/flow,gabelevi/flow,samwgoldman/flow,TiddoLangerak/flow,samwgoldman/flow,ylu1317/flow,mroch/flow,JonathanUsername/flow,popham/flow,nmote/flow,jamesgpearce/flow,nmote/flow,JonathanUsername/flow,mroch/flow,AgentME/flow,samwgoldman/flow,gabelevi/flow,facebook/flow,JonathanUsername/flow,TiddoLangerak/flow,ylu1317/flow,TiddoLangerak/flow,claudiopro/flow,TiddoLangerak/flow,AgentME/flow,popham/flow,AgentME/flow,claudiopro/flow,gabelevi/flow,samwgoldman/flow,nmote/flow,popham/flow,jamesgpearce/flow,mroch/flow,gabelevi/flow,JonathanUsername/flow,gabelevi/flow,gabelevi/flow,mroch/flow,claudiopro/flow,popham/flow,samwgoldman/flow,nmote/flow,claudiopro/flow,popham/flow,claudiopro/flow,JonathanUsername/flow