Added cacheIdentifier to Run, Lumi and Event

Added a cacheIdentifier in order to make it easier to identify when an item cached from a Principal has changed. This has been used by the EventSetup system from the beginning.
Properly handle setting cacheIdentifier when there are multiple Run,Lumi,Event

We now use a std::atomic static to uniquely give cacheIdentifiers to all Runs, Lumis and Events in a job.
Merge pull request #1398 from Dr15Jones/addCacheIdentifier

Multithreaded framework -- Added cacheIdentifier to Run, Lumi and Event