Make CaloTPGRecord a dependent record

The CaloTPGTranscoder implementation needs access to data in two
different Records. To make that possible, CaloTPGRecord is now dependent
upon those Records. This also means we must link with the packages
which hold those Records.
Make CaloTPGTranscoder interface thread safe

Removed the setup and releaseSetup methods since they were implicitly
requiring a state change on a const object. Also no returns boost::shared_ptr
to const objects.
Change CaloTPGTranscoderULUT to be thread safe

The base class CaloTPGTranscoder's interface was changed to be thread
safe. This means users of CaloTPGTrancoder no longer call setup. Therefore
CaloTPGTranscoderULUT was changed so that the creator of the object must
call setup and pass it the data which was formerly gotten out of the
EventSetup by CaloTPGTranscoderULUT itself. All values are calculated
up front to avoid lazy evaluation. This change makes the class
thread safe.
CaloTPGTranscoderULUTs is now an ESProducer

The CaloTPGTranscoderULUT class now requires its creator to read from
the EventSetup data needed by the class to finish its initialization.
Since ESSources are not allowed to read from the EventSetup, this mandated
that CaloTPGTranscoderULUTs become an ESProducer.
CaloTPGTranscoder no longer needs to be initialized by users

The CaloTPGTranscoder no longer requires code using the class to call
setup and releaseSetup. Now the class is always properly initialized
at the time the data is requested.
Merge pull request #6097 from Dr15Jones/threadSafeCaloTPGTranscoder

Thread safe CaloTPGTranscoder