Implement new static analysis tools and infrastructure for expression trees

This provides the tools necessary to analyse a given expression tree. 

This branch currently supports:
 - Getting type and reflection information from almost all types of expressions.
 - Emulating PHP's native type system for all operators as of PHP 5.6
 - Extendable type system implementation with type data for date for date time classes, native interfaces (eg `ArrayAccess`), string / array / math internal functions and the `ITraversable` query API.

Unsupported:
 - Dynamic language features such as variable function / method calls, variable class types...
 - Proper handling of references for all use cases (this is almost impossible in a language such as PHP)
 - Only a small subset of internal classes or functions type data is implemented.
 - User defined classes type data. Possible through utilising docblocks via [phpDocumentor/ReflectionDocBlock](https://github.com/phpDocumentor/ReflectionDocBlock)