New feature. Thinned collections.

Implementation of a new feature. This includes a
template class to be used to create thinned collection
producers. It also includes code to automatically redirect
Ref's, Ptr's, RefVector's, PtrVector's and things derived
from them to the thinned collections if the original
collections have been dropped. ThinnedAssociations and
a new table in the Framework are implemented to make
the redirection work. Keeping and dropping of the
ThinnedAssociations and table entries is handled automatically.
This includes code to make this work with Root I/O, Secondary
file input, secondary source, subprocesses, FWLite, EDAlias's,
and Streamer I/O. There are new unit tests for all
those cases as well.
Merge pull request #5515 from wddgit/thinnedCollections1000

New feature. Thinned collections.