ILed now extends CommonDriverInterface directly

Also added CommonDriverAction, a wrapper around a driver action.
Added Driver class

The Driver class is the base class for (most) drivers. It implements the
action binding interface and manages the callbacks.
Driver interfaces should still extend the interfaces while the
implementations can inherit from the Driver class. Since this means
diamond shaped inheritance, public virtual inheritance is needed.
DriverProxy now implements the CommonDriverInterface and IActionBinder
Now initiating the driver callbacks through finish()

The finish method takes the action id and the return code and initiates
the callback. It returns the return code afterwards so the child methods
can return with
return finish(CHILD_ACTION, Action::DONE);