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)
T is not the type of the functor. It's the type of the object (e.g. BidRequest) used to figure out the type of function (i.e. BidRequest::Factory).

You need some kind of type erasure if you're trying to pack everything in the same map. But why would you want to do that?