Expose sort and custom queries (instead of using QueryParser

This commit introduces two new features:

1) It is possible to pass a sort to the search function to have the output sorted. A utility function for creating the most common sorts is provided but it is also possible to create a sort manually and pass it to search.

2) It is possible to pass the search function an instantiated query rather than a string to bypass the query parser. Passing a string works as expected.