Extend detected.h and remove implementation of detected_or idiom from FunctionalDetails.h
Consolidate the implementation of the detected_or idiom in detected.h, and remove the duplicated implementation in FunctionalDetails.h
Consolidate the implementation of the detected_or idiom in detected.h, and remove the duplicated implementation in FunctionalDetails.h