Add DetectorFactory and dynamic specification of Watchman coverage

No merging until I've written proper documentation for new functionality, but so people can see and comment:

This adds a new type of factory which can build a DB defined geometry on the fly (less useful), or modify an existing DB defined geometry template (more useful) before the geometry itself is built. I decided to add this because there was no nice way to have a property of a geometry component defined as a formula (a function of other geometry parameters) in the ```.geo``` file, and no nice way to algorithmicly define PMT positions. The ```DetectorFactory``` to use is specified by name in the ```DETECTOR``` table under the field ```detector_factory``` and supersedes the ```geo_file``` field if used. If no ```DetectorFactory``` is specified, previous behavior is preserved. A ```DetectorFactory``` should define tables in the DB in the same way a ```.geo``` file would and make use of existing ```GeoFactory``` components. Intended use would be to load a normal (statically defined) ```.geo``` file into the DB and modify it as necessary for the dynamic functionality.

The second commit adds a ```DetectorFactory``` called ```Watchman``` which loads the default ```Watchman/Watchman.geo``` and modifies the geometry to give a desired covering fraction as specified by the field ```photocathode_coverage``` in the ```DETECTOR``` table. Photocathode area is calculated from the ```pmt_type``` specified for ```inner_pmts``` in the ```Watchman/Watchman.geo``` file and will automatically be recalculated if the ```pmt_type``` is changed via any means. It sounds complicated, but usage is simple. To run simulations in a Watchman style detector with 20% PMT coverage use this template:

```
/rat/db/set DETECTOR experiment "Watchman"
/rat/db/set DETECTOR detector_factory "Watchman"
/rat/db/set DETECTOR photocathode_coverage 0.2

/run/initialize

#processors

#generators
```

The default geometry will be completely rebuilt on the fly, and the resulting PMT positions will be stored in the output .root file in the usual way.