EventPrincipal::fillEventPrincipal takes ownership of arguments to avoid mutable state across threads

EventPrincipal::fillEventPrincipal was broken into two separate functions based on the use of the optional arguments. The new extended function passes EventSelectionIDVector and BranchListIndexes via rvalue reference rather than the shared_ptr from before.
All uses of fillEventPrincipal which passed the extended arguments were changed to no longer use the shared_ptr. Using ‘move’ semantics did not cause a conceptual change from the original code since those arguments were always reset from scratch each new event call anyway.
Changed internals of BranchIDListHelper to allow fixBranchListIndexes to be const

The structure which is used to convert the BranchListIndex read from the source to the indexes used in the job was converted from a map to a vector. This allows calls to fixBranchListIndexes to be immutable.  However, RootFile was depending on SecondarySources to get dummy values for the BranchListIndexes which came from calling map<>::operator[]. RootFile was changed so it would instead properly initialize the BranchListIndexes by calling ‘updateFromInput on a SecondarySource.
In addition, comments were added to clarify how this data structure is used in the threaded framework.
Moved knowledge of which BranchListIndex corresponds to any products produced in this Event from ProductRegistry to BranchIDListHelper

The BranchIDListHelper was already being used to determine the produced BranchListIndex and the feeding that back into the transient info held by ProductRegistry. That information was then only used in EventPrincipal::fillEventPrincipal which already has access to the BranchIDListHelper. Since the code no longer modifies the ProductRegistry, the member function was changed from ‘updateRegistries’ to ‘updateFromRegistry’.
Many unit tests were updated to match the new interface.
Renamed BranchMapper to ProductProvenanceRetriever
Removed unused RootDelayedReader::entryNumber() method
Changed variables, members and functions associated with ProductProvenanceRetriever to match new name

To match the renaming of BranchMapper to ProductProvenanceRetriever, all variables, member data and member functions which were using ‘mapper’ in their name have been changed to match the new class name.
Changed variable name mapper to provRetriever to match new class name
Added fillBranchEntry* method which allows specifying the EntryNumber

In order to support the delayed reading of provenance in the threaded framework I added versions of the fillBranchEntry* methods which take an explicit EntryNumber to use when getting the data.
Changed ProductProvenanceRetriever so EventPrincipal no holds its own copy of the mutable data

Previously the ProductProvenanceRetriever was shared by the Source and the EventPrincipal. This will not work with the threaded framework where there will be multiple EventPrincipals used concurrently. This change has the ProductProvenanceRetriever know which stream it is in (transitionIndex) and passes that information to the ProvenanceReaderBase when it is time to get the provenance info. In addition, the ProductProvenanceReader now has a ‘deepSwap’ method which allows us to swap out any Provenance information from the Source which was already retrieved while sharing the provenance reader which is stateless.
To make it clearer that the Source and EventPrincipal do not share the ProductProvenanceRetriever, the EventPrincipal::fillEventPrincipal no longer takes the object via a shared_ptr, but now just by reference. This required all calling methods to be updated.
fixed bug reading back old file formats

Had to move the call to ‘branchIDListHelper_->updateFromInput’ to before the call to ‘validateFile’ in the constructor since some old file formats were causing ‘branchIDListHelper_->fixBranchListIndexes’ to be called before ‘updateFromInput’. In the old version of the code this worked since calling ‘fixBranchListIndexes’ in the case where the internal map was empty would inject a dummy value (0) into the map which was then used to ‘fix’ the branch. This only worked as long as the Indexes to be fixed was of length 1. Moving the call to ‘updateFromInput’ earlier now guarantees that the structure is properly filled before any call to ‘fixBranchListIndexes’.
Merge pull request #944 from Dr15Jones/noMutablesFromSourceInEventPrincipal

Multithreading fixes -- No mutables from source in EventPrincipal.
Use thread-safe xerces-c initialization / termination helpers.