Hide implementation of getByLabel from Reflex

The new implementation of convert_handle uses R value references which are not parseable by gccxml.
When get fails, edm::Handle now holds a functor which can make the exception

Profiling of HLT done by Vincenzo Innocente showed that the time it took to create the cms::Exception object when a data product was not found was appreciable. This was made worse by the fact that the exception was never thrown since the code always checked that the Handle holding the exception was valid. This change delays the construction and formatting of the exception until it is actually used. This is done by having the edm::Handle hold a std::function<> object rather than a shared pointer to the cms::Exception. Profiling shows that this is a faster solution. To avoid copying of the std::function<>, edm::convert_handle was changed to use an rvalue reference which required all callers of the function to use std::move on the BasicHandle being passed in.
Hide use of Handle by edm::RefProd from Reflex

When building the recent change to edm::Handle, one package failed because Reflex decided to instantiate all constructors for the RefProd during parsing. Given edm::Handle is only forward declared for Reflex this failed. Strange thing is many other packages instantiated dictionaries for edm::RefProd without a problem. This change hides the implementation of the problematic constructor from RefProd.
Missed one std::move needed for new Handle interface
edm::Handle now uses a std shared_ptr, not a boost one to hold exception
Only hide std::function<> and C++11 syntax from ROOT.

Hiding the full implementation of Handle didn’t work since some code uses Handle as a member data to a class with a ROOT dictionary.
Also need to include a standard operator=
Missed a get that needed to be changed.
Needed to match new API for convert_handle
Merge remote-tracking branch 'official-cmssw/CMSSW_7_0_X' into HandleHoldsFunctorForExceptionConstruction
return empty shared_ptr from whyFailed() if no exception set
Added unit test for Handle
No longer a need to hide code from ROOT
Handle classes use a HandleExceptionFactory

Handle classes need to be able to throw an exception in the case where the data requested was not available. The previous implementation which just held a pointer to the cms::Exception was shown to be slow in the case where users were always checking edm::Handle<>::isValid() and not dereferencing the Handle. Using a factory to construct the exception only when it is absolutely needed speeds up the code.
Missed a needed change to error argument passed to edm::Handle
Removed unneeded include of functional
Merge remote-tracking branch 'official-cmssw/CMSSW_7_0_X' into HandleHoldsFactoryForExceptionConstruction

An earlier commit had removed the code which I edited in HLTrigger/HLTcore/src/TriggerExpressionData.cc.
The resolution was to leave the code out so it matched the earlier commit.
Merge pull request #1677 from Dr15Jones/HandleHoldsFactoryForExceptionConstruction

Make failed Event::get* calls faster