Add generic return types to Nested Coroutines.

You can declare your return type in `xpcc::co::Result< Type >`.
A call to `CO_CALL` or `PT_CALL` will return `Type` once the 
coroutine finished execution.
Refactor all Device Drivers using NCOs.