Rtbkit 632 unify injection pattern

This is a redesign to address the need to unify the injection pattern. There was lots of replicated code to load libraries/plugins. Every one of the 8 base classes repeated the same bunch of code to load them. Everything is now managed by a template (singleton) class called PluginInterface.

There are 8 placeholder functions (marked FIXME) that are there only to maintain backwards compatible interface, as RTB still uses them. If all is good with this implementation, then RTB can be updated to use the new interface and the placeholder functions could be removed.

Most of the changes are in the new classes and the 8 base classes, the other ~30 files were changed to adapt to the new interface.

Currently these changes are under test at DEV5.

NOTE: the 8 base classes mentioned are BidRequest, BidderInterface, WinCostModel, ExchangeConnector, AdServerConnector, and ExchangeSource (Bid/Win/Event)
Thing is, if I understand correctly, T in the static functions is the type of the functor used to create an instance of the "plugin". How would you directly template the class ? Different functors would end up instantiating different template class types, and you would either need to use `decltype()` to instantiate the class or make an helper function to rely on template argument deduction.

Anyway, since functors might have different types, you still need some kind of type erasure to abstract away the type of the functor to be able to store it somewhere, don't you ?