Replace function pointers based plugin API by a class with virtual member functions

Using a class with virtual members functions would make it possible to:

  • provide default empty implementations,
  • better define the life-time of currently global variables.