access per event per product parameter sets

This pull request is an improvement to the handling of provenance in the framework for thread safety and removing unnecessary redundancy.  The changes outside the framework are the minimal adaptation to the framework change 3) listed below.

The framework changes consist of:
1) The vector of process configurations is no longer persisted, because the information is redundant.  The information is contained in the vector of process histories, which is still persisted.
2) The branch description for each product no longer contains a transient map from the process configuration ID to the parameter set ID, and no longer contains a transient map from the process configuration ID to the name of the module that produced the product.  This information was redundant, as this information can be obtained through the process history ID.
3) In implementing 2, the function Provenance::psetID, which returned the parameter set ID of the module that produced the product was replaced by a free function that takes the provenance as an argument and returns the parameter set directly (not the parameter set ID).  The function Provenance::moduleName() was also replaced by a free function.  These new functions must internally retrieve a parameter set.  This means they can no longer be member functions of Provenance, because this would cause a cyclic package dependency,  The new free functions are in the package FWCore/Common Several packages outside the framework were minimally adapted to this change.
4) The edmProvDump command and one framework unit test needed adaptions because of 3).
5) edmProvDump was updated to use C++11 range for loops.
6) For physical design reasons, the Provenance class, and several classes containing it, (none persistable), will, in the future (not in this pull request) be moved from DataFormats/Provenance to FWCore/Common.  This is not done now, but to prepare for this all framework includes of Provenance.h now use the new Provenance.h header in FWCore/Common.
7) Because of the changes 2) and 3) above, the "parameterSetsMustMatch" parameter for merging files  is obsolete.  The default was "permissive".  With this pull request, this parameter will effectively always be permissive,as strict mode is obsolete.  This has zero practical effect because this parameter was never used explicitly anywhere in CMSSW, so permissive mode was always in effect.  Note: The "branchesMustMatch" parameter is unaffected by this pull request.