bugfix: /metrics/view: report missing query parameter
make host and path of graphite application configurable

* allow proxies or powering flot-based graphite-interacting
  applications on a different machine/port
* be more consistent as to building full absolute urls or not

while we're at it:

* make build_url function names more uniform and meaningful
* group these functions in the code base
* implement cleaner way to generate URL arguments
  and prevent occurence of '&?' at the start of parameter string
allow jquery.graphite to be used with multiple graphs on one page

support building web interfaces that contain 1..N graphs on one page.
(the graphlot interface itself doesn't do this [yet], but either
way this is useful for (other) interfaces)

* introduce a "wrap" box that contains everything else, on which we
  run the javascript logic.
* give all graphite-query/graphlot classes and id's a consistent name;
  giving all id's a per-graph specific component
* fix incorrect capitalisation in metricName
* fix rowlist which should be a class, not id. as they are not unique.
* document the "contract" between the html pages and the javascript
fix delete button
remove this.each from $.graphiteGraph()

it's not needed and only introduces complexity.
if you want to init multiple graphs, you can always do
$('foo').each.graphiteGraph()
make arrays_equal() and id() available to other JS
refactor graphlot DOM object id's/classes

* make all searches for elements within the wrapping element hierarchical searches starting at the wrapping element
* simplify names of elements within the wrapping element. they don't need a _<graph> identifier
* make these classes instead of id's, as they don't need to be unique per page (although most of them should be unique within the wrapping element)
* the wrapping element itself doesn't need a graph identifier either
* add tooltip to wrapping element, not to body
* remove "g_event_tags" because it's never referenced (and the same elements have also class "g_eventdesc")

notes:
* some searches used to be global (on the entire page), so this will improve performance a bit.
* much of this changeset can be generated with:
sed -i -e 's#$(id(#wrap.find(id(#' -e "s#id('\([^,]*\)', graph)#'g_.\1'#" webapp/content/js/jquery.graphite.js
sed -i 's#id="\([^"]\+\)_1"#class="\1"#' webapp/graphite/templates/graphlot.html
bugfix: fix css style of g_canvas
Revert "remove this.each from $.graphiteGraph()"

This reverts commit 758b9a94b846153b61391d3a01690d3e779d8355.

this was not needed and distantiated the code from proper jquery plugin
conventions
bugfix: put variables within correct graphiteGraph scope
Merge branch 'master-with-missing-commits'
Use Twisted==11.1.0

Carbon requires Twisted 11.1.0, but graphite-web has been requiring
11.0.0.  This means that, if installed on the same machine, one of the
versions will be overwritten by the other, depending on which one you
install first.  This is silly.

See: https://github.com/graphite-project/graphite-web/issues/35
Merge pull request #87 from iFixit/fix-conflicting-twisted-versions

Use Twisted==11.1.0
Pick up some commit history that was squashed
fix descartes link
Merge remote-tracking branch 'upstream/master'