Refactor Adaptor and Driver interfaces

This pull request completely overhauls the Adaptor and Driver interfaces. It removes many unnecessary methods and redundant implementations as well as adds new `Commander` and `Eventer` interfaces with default implementations for device commands and events.