Initial import of LiveSearch JavaScript

Mostly copied from alphagov/frontend and re-written to use .prototype for consistency with the rest of the project.
I've commented out some of the historyAPI stuff in order to get a small thing working with the intention of adding it back in later.
Add support.js required by LiveSearch
Make project use live_search.js

- Change the controller to respond with json
- Add js- classnames for LiveSearch to attach to
- Include live_search.js and support.js in application.js
Wholesale import of tests

- These should all fail, they're copied across unchanged from frontend.
Update liveSearch tests to work with this project

- Update tests to work with these templates
- Remove tests for removed functionality
- Fix some spelling errors in comments
Add empty templates.js

req for jasmine tests + so the asset pipeline doesn't barf
Make container for JS to add mustache into

Add a div with class js-live-search-results-block which the JavaScript can find and update the contents of
Add compilation steps + cleanup to make tests work
Hide submit button if js is enabled

- Add some styles for the form button if it's with a .js-enabled class. If js is enabled we'll be auto submitting the search results so don't need a button.
- Add a test that if the browser doesn't have HistoryAPI we unhide the button so users can use the un-enhanced version (make a selection, press the button, see the results update)
Remove hardcoded form action

Use finder.slug for the form action
Add back in popState handling to JS

- Still needs to update checkboxes
Add a change trigger to the checkbox clear handler

So that the search results update, trigger a checkbox change when the filter's "clear" link is used.
Bind an event handler to text inputs

Currently attached to form change, which is happens when the text input loses focus.
Remove trailing comma that was breaking ie
whitespace fix
Aria-live region and aria-controls

Add an aria-live=polite to the auto updating content, and an aria-controls to the form controls.
Add reinstating of text inputs on back button.

(needs tests still but I've just noticed there are no tests for any of the re-instation stuff so will do it all in a later commit.)
Add history for radios

- Radios reinstation uses the same functions as checkbox reinstation so generalise restoreCheckboxes to restoreBoolean so they support both.
Basic tests for repopulating the search form

Test the functions involved with repopulating the form when a window.popstate occurs.
Listen for return on text inputs

Listen for return on text inputs and update the search results when a return is detected.