Allow to_string to work with python types

The default behavior is to just str() them, which
is better behavior than to do nothing.

The spec does not specify what should happen with
language specific types (it only assumes JSON types),
so we're not violating the spec.  It accomodates the
use case where you want to be able to work with a python
type as an expref, for example::

```
  >>> import jmespath
  >>> from datetime import datetime, timedelta
  >>> data = [
      {"time": datetime.now(), "other": "foo"},
      {"time": datetime.now() + timedelta(seconds=1), "other": "bar"}]
  >>> jmespath.search('max_by(@, &to_string(time)).other', data)
  'bar'
```

cc @danielgtaylor @kyleknap