First cut of a spelling suggestion class

Note:
This depends on the aspell system package which isn't in our puppet config yet.
Preemptive refactoring of result_set_presenter

We intend the plain array format to be removed at some point.
I want to add more things to the hash format (specifically spelling
suggestions), so it feels wrong to call it ``present_with_result``. Let's
instead have one well-named method and treat the undesirable case as the
exception.
Harmonise API with the other presenter
Tweak the API of Suggester

Return an array, even though we only currently generate one suggestion.
This should make adding additional suggestions easy later on.

Make the method name explicit about what type it returns.
Return spelling suggestions for search terms
Don't downcase suggestions for no reason

I can't remember why it's there, it's not tested and I can't see a benefit.
Suggester retains words that return no suggestions

Otherwise it would remove words that it couldn't make a suggestions for.
This would be bad for queries with words not in the default en_GB dictionary,
because the GOV.UK corpus probably contains many things it does not.
Install aspell and libaspell-dev for Travis tests

Should fix failing Travis tests on the `spelling_suggestions` branch.

This will execute before the repo is cloned. `update` is required because
APT's cache may be pointing at stale mirror locations. `-qq` makes APT super
quiet, so that it doesn't clog up your normal test output. It should however
still give a meaningful message if it fails during the `apt-get`.
Merge remote branch 'origin/master' into spelling_suggestions

Conflicts:
	Gemfile
	Gemfile.lock
Include aspell-en for Travis tests also

Provides English dictionaries. The main `aspell` package recommends this,
rather than depends on it. Travis tests currently pass without it - but we
think it may be required and it maintains parity with our Puppet manifests.
Merge pull request #106 from alphagov/spelling_suggestions-travis_deps

Install aspell and libaspell-dev for Travis tests
Don't change the letter cases of words in the term

Want to avoid the weirdness of "correcting" eg "in" to "IN".
Don't suggest the input

If there were no changes, we would still return the input, which isn't very
helpful.
Handle multiple spaces better in suggestions.

Before this, a query such as "find  jobs" with a double-space would result in a
spelling suggestion; similarly with leading or trailing spaces.
Merge pull request #107 from alphagov/spelling_suggestions

Spelling suggestions