Auto-complete search feature

Auto-complete enables queries for a particular topic in different
contexts.  The initial contexts are:
- search : the main search box
- inline : searching in any text box, such as @user
- attachments : searching for documents to attach

This commit has the basic structure for adding sources of search
data and then querying those sources for the desired term.

The endpoint is
/ac/:action?q=:term

For example:
/ac/inline?q=joe

Sources are defined in `api/services/sources`.
The configuration is at `config/settings/sources.ex.js`.

In each config, it specifies a `type`.  That type is then
used to look up the correct source module, and query it for
the search results.  The full config is passed to the
source module to do with it as it pleases.  It returns
the tuple `(err, results)` where a non-null error object
means something went wrong.

Initial support permits searching fields in sails models,
and search mediawiki instances like wikipedia.
Remove .gitkeep

Now that services has services in it, the gitkeep isn't needed.
Return values for all search fields

If you search for both [name, username] and one of the
fields matches, then return the values for all the fields.

eg: search for jo returns { username: 'joe', name: 'Joe P' }

This way those fields can be used in rendering the autocomplete
results.
Dedup results with multiple fields

A query may match multiple search fields; if so,
remove the duplicates.
Add auto-complete feature & sources framework

Merge branch 'sprint4-ac' into sprint4

Auto-complete allows searches on specific data sources

Sources integrates different data sources into the sails framework.
Can then be used for searching, auto-complete, etc.

Initially supports searching models and mediawiki sites.