Allow concrete services to be used in ServiceHandle<T>
Modify ServiceHandle to fall back on dynamic_cast if the template argument is not an abstract interface. This is similar to the way ToolHandle works for concrete tools.
This also adds the new header Gaudi/Concepts.h to host C++20 concepts of common utility, starting from Gaudi::IsInterface.
Closes #344 (closed)