Implements Recent Searches

This pull request adds a recent searches dropdown list to the listing pages in the admin ui.

![screenshot](https://dl.dropbox.com/s/m2h4f7l27dl848b/Screenshot%202014-05-29%2015.50.34.png)

If there are no recent searches, the dropdown is hidden. It only keeps the 20 most recent. It is sorted by most recent first. It is just stored in local storage. If there are other params in the querystring, it keeps them, only updating the `q` field.

It uses the new [keystonejs/queryfilter](https://github.com/keystonejs/queryfilter) library to use the same filter code on both the backend and frontend.

Notes:

- Address/location fields values are now an array, instead of an object.
- Query filter strings now include the type of the field prefixed with a dollar sign, this is to ensure we can handle location fields correctly when parsing then stringifying them. For keystone use cases, this is backwards compatible, and is just a graceful upgrade to the new format.
- querystring and queryfilter are bundled inside the `lib` directory, rather than being browserified into the `list.js` file