Timefilter Auto Refresh - Closes "Support for auto-refresh #1845"

Fixes #1845 - Support for auto-refresh
Fixes #1778 - Courier race condition
Fixes #2365 - Respect shard_timeout config
Fixes #2420 - Visualization disappears in discover

Feature:
Enable auto-refresh of the various built in tabs, e.g. Discover, Visualize and Dashboard. The implementation should allow future plugins to respond to refresh events.

Usage:
Upon clicking the top right corner, you will be presented with two tabs, "Time Filter" and "Refresh Interval" (see attached image for details). The "Time Filter" tab allows users to add time filters in the same capacity as they are today. The new "Refresh Interval" tab allows users to select a predefined refresh interval. Upon selecting a refresh interval, all tabs will automatically refresh their content.

Implementation:
The feature was implemented by piggy-backing on top of the existing timefilter object. The timefilter object now contains a refreshInterval. The courier now receives reference to the timefilter object and listens for changes on this refreshInterval. It updates the search interval accordingly. 

![refreshfeature](https://cloud.githubusercontent.com/assets/1840773/5365526/bcfefcea-7fa1-11e4-99ae-8ca43dbc30ed.png)


 - [x] merge master
 - [x] search requests that don't complete before the refresh interval is triggered again should delay the next trigger until they are complete. (pretty sure this will require some dev)
 - [x] verify that requests/searchSources are never duplicated
 - [x] choosing "auto refresh off" should not trigger another request
 - [x] refresh interval should be saved in sessionStorage so that it persists across refreshes, but is issolated from other tabs and won't be shared in urls
 - [x] Give love to list of refresh options.

refactored to use the kbn class pattern