nb: generic noise budget support
This patch provides a new nb sub-module that defines classes for managing and calculating noise budgets. It provides the following overridable classes:
nb.Calibration A noise calibration nb.Noise A noise source nb.Budget A budget of noises
The Budget class includes a calc_trace() method that will return a traces dictionary that includes data and trace plot styling for every noise term in the budget recursively.
The existing included interferometers are updated to define their budgets using this new interface, and the plot_noises function is updated to accept the new traces dictionary.
An HDF5_SCHEMA describes how trace dictionaries are encoded into HDF5 files. The new io module includes functions for writing traces to HDF5 files, and for reading traces stored in this format.
The command line interface is updated to handle this new structure.