This is the first step in the introduction of a static analsysis framework for the nit language.
This PR introduces the basic behaviors of a StaticAnalysis and ForwardAnalysis.
I added ReachingDefAnalysis as an example of StaticAnalysis implementation.
I also added `nitsaf`, a client example for the saf module.
I suggest to read this PR commit by commit, I splat it in steps:
* introduce base services
* handle ifs constructs
* handle loops constructs
* handle method declaration
Next steps/PRs will be:
* introduce inter-procedural analysis
* use RTA for better inter-procedural analysis precision
* backward analysis
* add more analysis (isset checks, attr isset, unused properties, useless nullables...)
Closes #511.
Pull-Request: #1764
Reviewed-by: Jean Privat <jean@pryen.org>