Initial go at Dashboard Templates.
Auto-reload the page when converting from tree view to completer view.
Merge remote-tracking branch 'upstream/master' into ceres_support

Conflicts:
	webapp/content/js/dashboard.js
Merge remote-tracking branch 'upstream/master'
Fix calls to carbonlink query in WhisperReader.

Probably needs to be duplicated in the GzippedWhisperReader.
Merge remote-tracking branch 'upstream/master'
Merge remote-tracking branch 'upstream/master'
Poll all carbon caches when the metric starts with CARBON_METRIC_PREFIX

This is to make graphing of current stat of the carbon daemons possible.  Previously it was a crapshoot on whether the metric was magically in the cache that was queried.
Collapse the navBar if the location.hash is passed in.

Don't annimate either collapse.
Merge remote-tracking branch 'upstream/master'
Add the URL to the exception when remote failed to respond.
There was a timing issue when two requests for the same URL hit at the same time.  The result was that the thread that created the connection didn't end up grabbing the wait lock and, thus, the connection didn't exist for the one that did.

No idea if this is the right solution, but it appears to work in my testing.
Continuing: There was a timing issue when two requests for the same URL hit at the same time.  The result was that the thread that created the connection didn't end up grabbing the wait lock and, thus, the connection didn't exist for the one that did.

That last fix wasn't good.

I don't believe that this fix is the right one either as it ignores the fact that the connection var is supposed to be global to the class (or something).
Merge remote-tracking branch 'upstream/master'
Compact the key if it's bigger than the memcached limit for key size (250)
If the relative time ranges aren't set in the state (saved dashboard), then use the defaults.
Allow the creation of a graph from a metric.  This is useful when you have a function based metric that isn't currently part of a URL or saved graph.
This solves the issues I've seen with using remote nodes.

Add a connections dictionary to the RemoteReader class to deal with the non-requesting thread getting the wait_lock.
Add a connection Event() to delay the call to connection.getresponse() until AFTER the connection has been established.
Merge remote-tracking branch 'upstream/master'
Change the test to be a try block for the cases where the length of the array is somehow longer than the size of the current index.  This is happening to me, but I haven't looked at the whisper files yet to determine HOW the data is coming back weird.