Remove east/west test from channel validity

We only handle the FMS in this code, and the east/west variable was hard
coded to always be the same value
Use detector ID in test for channel validity

Removes need to convert to old-style "NSTB", which it would be best to
remove. Now use database-defined detector IDs instead.
Use consistent row/column range

Use [1,N] definition from the database throughout, rather than
converting to [0,N) range.
Rework channel validity to check database

This implementation is slightly more complicated and accesses the
database, whereas it didn't before. However, the database check is
useful as it ensures there is actually information available for the
detector in question, and it avoids hard-coding the numbers of rows and
columns so it should be more general.
Simplify cut to exclude corner large cells
Protect against invalid pointer to database
Prevent writing of point maker tower list

ClassDef version is already 0 so the class shouldn't be written to file
anyway, but add the appropriate comment style for consistency with other
members
Extra comments in StFmsPointMaker methods
Add StFmsPointMaker method to get fms collection

We do the exact same thing in two places, so it might as well be in a
function
Enhance tower energy sum check in point maker

- Move test to a separate function to reduce the length of the main
  function a little
- Attempt to read centre-of-mass energy from StRunInfo rather than using
  a hard-coded 500 GeV value. Use 500 GeV as the default if StRunInfo is
  not available
Remove row flip before channel validity test

This was a holdover from an earlier version, where we passed row number
to Steve's code, where row number was defined the opposite way round to
how it is in the database (top-down instead of bottom-up). As that is no
longer the case we can remove it, because the detector is vertically
symmetric and the validity test therefore is insensitive to the flip.
Use map instead of vector in StFmsPointMaker

Remove NSTB indexing of detectors in pointmaker. Use detector ID from
database throughout

Note that the calculated cluster and photon IDs differ as they
are now calculated based on detector ID not NSTB
Use Boost foreach in pointmaker loops
Rename doClustering to clusterEvent

This is more descriptive and will fit more nicely with other functions I
intend to add
Move detector-wise clustering to separate function
Move cluster processing into a separate function
Initialise geometry for each run

Initialisation was only being done when the geometry object was first
allocated. In practise this probably doesn't change anything, but in
principle we should re-initialise at each new run.
Use object instead of pointer for geometry
Expand comments for clusterEvent()
Put photon building in separate function