Add document level events to selection buttons

The current version of `GOVUK.selectionButtons` (see https://github.com/alphagov/govuk_frontend_toolkit/pull/121) works by taking a jQuery-wrapped collection of DOM nodes as the first parameter, and binding events to them:

```
var $buttons = $("label input[type='radio'], label input[type='checkbox']");
GOVUK.selectionButtons($buttons);
```

This sometimes doesn't work on pages where the HTML is replaced by AJAX because the elements those events are bound to may no longer be in the page.
This pull request (PR) gives `GOVUK.selectionButtons` the ability to take a [selector string](http://api.jquery.com/category/selectors/) instead, which it uses to assign a [live event](http://api.jquery.com/live/) to the document:

```
GOVUK.selectionButtons("label input[type='radio'], label input[type='checkbox']");
```

This means once you've called `GOVUK.selectionButtons`, any changes to the content of the page will not effect the functionality. This is backwards-compatible, the existing interface is still supported.

This PR also includes a rewrite of the tests for selection-buttons. The previous ones were too tied to the implementation and didn't describe the requirements very well.
I like the use of `elmsOrSelector` to make it explicit what's happening and losing `SelectionButtons.prototype.setEventTypes` too. I ended up doing a similar thing with `SelectionButtons.prototype.markSelected`.

I would like to keep the local variables that identify the type we end up using (and include something that points to the fact the variable sent into `SelectionButtons.prototype.bindElementLevelEvents` is a jQuery object.

How about this?

```
SelectionButtons.prototype.bindEvents = function (elmsOrSelector) {
  var selector,
      $elms;

  if (typeof elmsOrSelector === 'string') {
    selector = elmsOrSelector;
    this.addDocumentLevelEvents(selector);
  } else { // elms is a jQuery object
    $elms = $(elmsOrSelector);
    this.addElementLevelEvents($elms);
  }
};
```

(I'll change the `bind` prefix separately btw, including it here so as not to confuse issues.)