Adding new functions from boto/jmespath

- Adding starts_with, ends_with, reverse.
- Updated max, min, max_by, and min_by to support strings and numbers.
- Updated lexer to tokenize "``" as an empty string.
- Made `JmesPath\FnDispatcher::type` static and public.
- Now explicitly passing "from" around to validate arguments.
- Using reduce functions for aggregate sequence functions that can now
  actually validate the values returned in a sequence.