Workaround for ROOT6 limitation

ROOT6 uses a version of the llvm just in time compiler that cannot handle embedded assembler code.
boost/shared_ptr.hpp contains (indirectly) two headers that contain assembler. This breaks many framework unit tests.
This workaround sets preprocessor variables recognized by boost that are used if and only if ROOTCLING is defined. These preprocessor definitions cause the assembler code to not be included. This fixes the unit test errors.
The final fix for this problem should be either that ROOT6 is fixed to handle assembler, OR that CMSSW replaces with std::shared_ptr those uses of boost::shared_ptr that cause problems 

I accidentally closed #1842.  This is a duplicate of #1842