Add jmespath.test git repo as a submodule
Update compliance tests with latest tests
Initial commit that switches to an simpler AST

This commit is a pure refactoring, a non-functional change.
The internal have been restructured as follows:

* The AST nodes have been switched to dictionaries instead of
  classes.  In additional to getting pretty-printing for free now,
  this also makes it the AST nodes purely data, the search() behavior
  is now removed from AST nodes, effectively decoupling the AST
  representation from the execution semantics of the AST nodes.
* The search()'ing functionality has been extracted to an external
  tree visitor.  The visitor interface also allows for a generic
  mechanism for manipulating the AST in the future (i.e. AST
  rewriting for optimization, emitting byte code).
* The functions have been moved out to a separate module.  The
  interpreter now takes a dependency on the runtime functions.
  This also theoretically makes it possible for a user to add
  new functions.

The only noticeable change from this change is that function
name validation and arity validation are now at runtime instead
of compile time.  By doing this though we now allow for user
provided functions.
Cache visitor method lookups

Slight improvement in perf when a node appears
multiple times in an expression.  Also boosts perf
in the case where the same expression is searched
repeatedly with different data.
Fix failing build, use https link for test submodule
Merge branch 'simple-ast' into develop

* simple-ast:
  Fix failing build, use https link for test submodule
  Cache visitor method lookups
  Initial commit that switches to an simpler AST
  Update compliance tests with latest tests
  Add jmespath.test git repo as a submodule
  Fix to_string to json dump without spaces