models/search: Return a map of results data

This changes the return type of (search) so that it returns a map which
contains the results and results count, which can be looked up using the
:results and :results-count keywords, respectively.
models/search: Rename query-string to query
models/search: Cast results to vector
controllers/search: Limit the number of results