The aim of this branch is to confine, for everything that inherits from IInterface, the calls to addRef(), release() and queryInterface() to the SmartIF implementation. Exceptions are a few places where interfaces (currently) return bare pointers (instead of SmartIF...) and where one thus has to addRef() explicitly to avoid returning a dangling pointer. This can be avoided by changing the relevant interface to return a SmartIF instead of a bare pointer.
In addition, make SmartIF 'look and feel' like a smart pointer.
And add a few other C++11 modernizations (eg. prefer STL over raw loop)
Fixes GAUDI-1094