Major refactoring of code centred around src/util/isotope.py

The Isotope class (and others derived from it) have been completely
redesigned to make them much more intuitive and to make scaling of
histograms much more flexible, logical and (hopefully) simple.

This also promted changes in:
 * physics.py --> additional functionality in DoubleBeta class
 * spectrum_data.py --> just one method for scaling histograms now. The
                        improved Isotope class is used to provide many
                        different options for scaling, many more than were
                        available previously. Despite requiring more lines
                        of script to handle scaling, it is hoped that the
                        new philosophy will be better in the long run as it
                        is vastly easier to understand what is happening in
                        the script and is much more flexible.
 * generators.py --> modified to automatically create the correct type of
                     Isotope object for the generator and isotope
                     combination
 * reconstructed.py --> modified to reflect defaults changes
 * write_spectrum.py --> modified example script in light of changes
 * constants.py --> more readable, intuitive and additional isotope
                    dictionaries
 * defaults.py --> additional defaults added, more intuitive

Finally added a new module error_utils which will be populated with useful
functions for commonly used error checking contructions
Some minor changes
modified limit setting code

Improved module for limit setting code. Also created script
spectral_plot.py for producing spectral plots and performing some basic
limit setting.
Merge remote-tracking branch 'origin/master'
can now change energy limits and update file name