Add support for rotation of Tracker coordinate system wrt global (lab) frame.

The rotation parameters must be set in one of the Init routines, typically
in ReadDatabase or ReadGeometry. Nothing needs to be done if there is no
rotation, i.e. the change is backwards-compatible.

fOrigin of the tracker is defined in the global (unrotated) reference frame:
v_tracker = fRotation.Inverse() * (v_global - fOrigin)
v_gobal = fRotation * v_tracker + fOrigin

For efficiency, fIsRotated is set at the end of Tracker::Init() so that
we don't have to do the relatively expensive fRotation.IsIdentity() check
for every new track.
Small improvements to k3dFastMatch detection code in Tracker::Init
Initial versions SoLID-specific classes, rewritten against GEM lib.

Implement namespace SoLID, bare-bones spectrometer SoLID::SolSpec and
SoLID::GEMTracker and SoLID::GEMPlane detector classes. Add SoLID library
to Makefile. Allow more fine-grained building of libraries and add
additional dependencies in Makefile.

Detector classes do not deal with MC input yet. In MC mode, should
- retrieve MC hits and track(s)
- set strip positions automatically in the same way the digitization does

Setting of projection width and maxslope still untested.
Database still needs to be rewritten.
Implement SolSpec constructor. Instantiates one GEMTracker per sector.
Let SolSpec set up text variables for use in text input files.

The variables "allsectors" and "planeN" (N=0..5) are defined. Usage examples
for database keys:

solid.tracker.${allsectors}.u.angle = 10.
  (angle of u-projections in all defined sectors is 10 degrees)

solid.tracker.${allsectors}.${plane1}.z = 1.5
  (all planes names like "u1", "v1" etc. in all sectors have z = 1.5)

Still TODO: variables reflecting the actually defined plane names
grouped by same z. These would be useful for output file & cut definitions.
Let SoLIDGEMTrackers use a DB file name with the sector number removed.

This lets all configured trackers use the same database file.
For prefix levels > 4, search for sharable database keys up to level 3.

Example:
Plane name = "solid.tracker.12.u1.key" (level 5) ->
search for "key" up to level 3:
"solid.tracker.12.u1.key"
"solid.tracker.12.key"
"solid.tracker.key"

For less deep prefixes, fall back to the previous behavior (search
at most one level up).

Includes a workaround for a bug in LoadDB in analyzer version <= 1.5.24
New program dbconvert for automatic import of the libsolgem database
Add forgotten initialization of phioff
Change the definition of SoLID::GEMPlane::fOrigin to match libsolgem.

libsolgem defines the origin as the center of the wedge's bounding box.
If the wedge is offset by phioff, the origin needs to be rotated
correspondingly. libsolgem hits are always in the wedge frame (or rather
the strip frame, which shares its origin with the wedge frame), but
we need the hits in the Tracker frame which is shifted by the plane's
origin, including the phioff rotation.
dbconvert: Collect info in ValueSet_t. Calculate strip parameters.
dbconvert: Write output file
dbconvert: Read command line parameters for a bit more convenience
This makes it unnecessary to define DEBUG in Makefile. #ifndef NDEBUG will
do anyway.
dbconvert: put strip positions at the center of the strip area, not the edge
Use TVector3::RotateZ instead of explicit TRotation.
Fix buggy calculation of fSize in SoLID::GEMPlane::ReadGeometry
Fix buggy SoLID::GEMTracker::PartnerPlanes(). Plane origins weren't updated.
Add dummy SolSpec::ReadRunDatabase to work around THaSpectrometer requirements
Make pulse shape test in ChargeDep configurable via database. Default is yes
dbconvert: Add check_pulse_shape key. Move do_noise to plane parameter section.