Refactored PWM class.
Removed PwmController, every peripheral implements its own
top-level peripheral class like GpTimerPwmUnit.
GpTimerPwmUnit uses GpTimerBase as base class.
Update of Gpio and GpDma classes.
Base peripheral classes are implemented as separate handlers and
contain functions to monitor peripheral channels usage.
Object-oriented implementation also allows to easily add
power management features to these peripheral blocks.
Minor changes in internal code organization.