Adds switch statement in cluster filtering
Moves cluster fitting to its own function
Removes unnecessary logic from event fitting
Sets bad event flag in a single location
Moves ambiguous cluster fit to its own function
Uses switch to select fits for cluster categories
Separates cluster fit into its own function
Fixes error in event fitting return value

Returning nPhotons corresponded to returning success (as the int
nPhotons will be cast to bool true), whereas an unsupported number of
photons should return false.
Moves global cluster refit to its own function
Cleans up global photon refit function
Checks number of clusters before all else in refit

This prevents making unnecessary calculations in case of an invalid
number of clusters.

Returns true in case of a bad number of clusters as the event is still
valid even if a global fit can't be done.
Removes check on number of photons in global refit

This check is also made in the globalFit function so it is not necessary
to repeat it.

This does change the logic a bit, as an event with more than the maximum
allowed number of photons for a global fit will now be accepted. This
makes sense to me as the inability to do a global fit doesn't invalidate
the original per-cluster fit.
Removes excess warning messages

globalFit function already prints an error if the number of photons
after the fit differs from that before.
Renames cluster fitting methods

Gives greater consistency and clarity in naming.
Simplifies bad cluster helper functor

Not really needed to inherit from unary_function for our purposes
Adds comment about geometry ownership
Uses smart pointer for cluster fitter

Needs to be moved within the ifndef CINT block as CINT won't parse
C++11.
Removes use of using namespace

Class methods are now properly defined inside the namespace.
Uses namespace alias for brevity

Also moves ClsuterIter typedef to the start of scope for greater
visibility.