Adds smart quoting for search terms

Instead of naively splitting the search string on spaces, we now use the ``django.utils.smart_split`` to respect quoted items.

This doesn't influence simple searches such as the string ``example query``, since both terms are on an implicit AND operation, but this search does not necessarily match the words together, exactly as written.  It returns results that have both.

By contrast, the quoted search string ``"example query"`` will conduct a search where the words appear together.