First commit.
Skeleton code in place.
Begin to provide a nontrivial implementation.
Calculate escaping photons from NIST mass attenuation values.
Calculate photon count dynamically.
Add in a spec for annihilation photons.
Add in channels for air.
Better separate out materials.
Composite materials.

Material -> Layer.
Add in 62Ni(d,p)63Ni channels.
DetectorLayer.
Drop mistaken 87 keV deexcitation gamma.
Keep track of intermediate intensities.
Add current directory to PYTHONPATH.
Add additional channels.
Move .csv files to a new db/ subdirectory.
Script to output values.
Adopt a different approach to doing calculations.

Refactor the code to use "tables," "operators" and "arrays." Tables
contain column data and are wrappers round Pandas dataframes.
Calculations are made by applying operators:

    fractions = operator.transmitted_fraction() * materials

The result of a combination of an operator and a table is a table.
Operators can also be combined and then later applied to a table:

    op = operator.escaping_photons() * operator.transmitted_fraction()
    photons = op * photon_counts * system

Arrays are used to keep track of multiple scenarios.  An array
can contain a list of operations or a list of tables.  It is used
in expressions interchangeably with tables and operations, and
calculations or merges are carried out over all of the objects
within them.
Add another channel.
Add a channel report.