Add wait views + refactor event listeners (bug 1024451, 1025080)

This ended-up resulting in a bit of a re-jig so that all the ugly event listening code to handle resets could be removed. 

This is the summary so far:

* Add PageView all pages (e.g. not errors or throbbers) derive from this. This view defaults to listening to model events and adds the handlers for the events which then make it possible to override them in the relevant places for reset.
* A new IndexView has been added whose job it is to deal with start-up.
* The global AppView still exists but is pretty much limited to setting up the app.
* There's now a view manager which deals with tearing down the previous views instances. This makes it a lot easier to ensure we don't have zombie views kicking around.
* The router now uses the viewManager to show views which makes that a bit simpler. (It could almost certainly be reduced further to just config).
* the hide method on throbber and error has been removed so that we just use close() directly. Saves on a bunch of duplication where the old hide method was just a wrapper.
* Adds the port of the wait code. This is mostly just lifted in direct from webpay.
* Added a current func, which allows a lookup of the current view via the router.
* Add two wait views one for each side of the provider's payment pages.
* Added ability to run sinon server with a stack of requests so it can do the multiple polling requests at the same url and change the status.
* Added tests for the majority of the wait flows. 

Working on timeout (setTimeout not ajaxTimeout) needs to happen separately.
```javascript
if () {
} else {
    if () {
    } else if () {
    }
}
```

is the same as

```javascript
if () {
} else if () {
} else if () {
}
```