New start on 'develop' branch because the way I had set up the
previous 'develop' branch completely broke the git history, which
would make merging back a problem.  We unfortunately loose all the git
history for the develop branch but that isn't too much of an issue.
removing dataset directory; the new datset code will be a pretty complete rewrite
removing metrics.py because the new code will be a pretty substantial rewrite
testing re-adding metrics.py
more tidying up of stuff that will change substantially
Modified EnergyNode so it does the right thing when 'cumulative' is set
Testing EnergyNode more fully
Started work on LocateGapsNode
LocateGoodSectionsNode actually appears to work... needs more testing...
tiny tweaks
* implement handling of 'gap' in timeframe.adjacent
* write tests for timeframe.adjacent and merge
* HDFDataStore adds a `look_ahead` dataframe to each DF
* refactoring:
  - HDFDataStore.load() now returns a generator, not a DF
  - as such, Loader.load_chunks() simply calls HDFDataStore.load()
    and so has been renamed to HDFDataStore.load()
* Changed tests so they fit the new design.  All tests pass.
LocateGoodSectionsNode no longer uses reframe index! Instead uses look_ahead to tell if last sample is start of gap or not. Also keeps state in LocateGoodSectionsNode to record whether last chunk ended with a good section or bad section.
Finished LocateGoodSectionsNode.  Wrote tests for LocateGoodSectionsResults
tidied up locategoodsectionsnode and made tests a tiny bit more rigorous
adding more docs to locategoodsections
LocateGoodSectionsResults now merges together TimeFrames if two rows
are within max_sample_period of eachother (previous the two rows had
to be precisely adjacent)
handle empty Index
removing concept of 'bookend_gaps_with_zeros'
deep clean out of all mention of 'bookend_gaps_with_zeros'
EnergyNode now only calculates energy for good sections.  Needs more tests.