Modified `Building` class as per discussions between Jack and Nipun
earlier today on email.

* Added `Electricity` class for holding electricity data and methods.

* Replaced `map_appliance_to_upstream` and `map_circuit_to_mains` with a
  single `Electricity.wiring` attribute which is a NetworkX Directed Graph.
  Using NetworkX should reduce the amount code we have to write, whilst allowing
  us to represent a wiring system of arbitrary complexity (from a simple domestic
  house to a complex industrial wiring system).

* The previous design didn't hold any information about the type of electricity
  meters used, or allow for circuits which may be instrumented with multiple
  meters.  Info about the class of each meter might be useful when calibrating
  and also during feature detection (some meters do very odd things to
  data!).  So I've made two tentative changes:

  1) `mains` and `circuits` column names now include a
     `meter_<K>` field so full column names will be of the form
     `mains_0_meter_1_apparent`.  This allows us to represent the
     situation where we might have multiple meters recording the
     same data (which is true in Jack's dataset where we use both
     our Sound Card Power Meter and a Current Cost CT clamp to
     measure a single mains feed)

  2) I added an `Electricity.meters` attribute to describe each class
     of meter and to specify which channels use that class of meter.

* Added optional DataFrames in Building for:
  * weather
  * gas
  * water