Php compiler

This branch restructures the implementation to add support for different "runtimes" (or JMESPath implementations). This change introduces a `CompilerRuntime` that compiles a JMESPath expression into PHP code. This runtime can be useful in applications that know they will have heavy reuse of expressions or wish to pre-compile expressions before running. This change also paves the way for creating a bridge runtime that automatically utilizes a JMESPath C extension (if one was created).