Granular link checking

This adds a feature that allows editors to check their documents for the presence of broken links (i.e. links to pages that do not return a successful response). For now, broken link checking is manually instigated by users via a new panel on the right of the page:

![screen shot 2014-06-19 at 17 36 41](https://cloud.githubusercontent.com/assets/3687/3330382/2bc50c32-f7d0-11e3-9fa3-5d6e2d0b874a.png)

Users see a message whilst the report is running:

![screen shot 2014-06-19 at 17 38 58](https://cloud.githubusercontent.com/assets/3687/3330407/6209a154-f7d0-11e3-8ae1-7d7b7f0d63dc.png)

This automatically updates to show the results when the links have been checked:

![screen shot 2014-06-19 at 17 41 52](https://cloud.githubusercontent.com/assets/3687/3330429/a487cc18-f7d0-11e3-80af-69dd6f2eb827.png)

The report is automatically re-run if a document with broken links is edited. When the document has the all clear, they see this:

![screen shot 2014-06-19 at 17 43 19](https://cloud.githubusercontent.com/assets/3687/3330450/d58d0684-f7d0-11e3-8546-a3f4f2bbecb4.png)



https://www.agileplannerapp.com/boards/173808/cards/3358
The indentation is a little funky here. Also I am not sure having the method as both a self executing function and a named function is so easy to read. My general assumption when reading self executing functions in JavaScript is they are not called by name. I would be inclined to define it as a function and then call it immediately. Something like this:

```javascript
function startPoller() {
  setTimeout(function() {
    poller(startPoller);
  }, wait);

  if ( wait < maxWait ) {
    wait = wait * 1.5
  };
}
startPoller();
```

In that I also replaced `poller.call(this, startPoller)` with just `poller(startPoller)` as the `this` in that case will just be `window` as you haven't bound a different context on the function you pass into the timeout. Direct invocation makes that line simpler to read.

One last thing as per the style guide `max_wait` should be `maxWait`.