Major refactor

This started as me just wanting to add an extra widget (Apdex) but turned in to a reasonably significant rewrite. You're welcome to take it on board or not, but I hope you find it useful.

* Refactored widgets in to a single widget that uses data attributes
  on the dashboard elements to determine which metric to get from the
  New Relic API and the limits for changing colour of the widget.
* Move logic for dealing with the API etc in to a new class, greatly
  simplifying the jobs, and making it easily extensible.
* Uses history provided by dashing if its available (history.yml or via redis if patched)

N.B. this obsoletes the past few pull requests I've made. This pull request is based on the current state of your master branch, so it will merge cleanly to that only.