Basic UAVCAN support

DO NOT MERGE.
Let me throw it at the ground and miss first.
I'm not sure it would be wise to replace the assertion here with a performance counter. It makes sense to maximize this error because:

* Once we're up and running it's quite unlikely to suddenly get a `nullptr` instead of a valid input.
* If there's no valid input provided, we could just skip the output update steps until there's a valid input again, but this already may have drastic effect on the vehicle operation because ESC will be uncontrolled for an indeterminate amount of time.
* Null pointer here will most likely indicate a software bug rather than e.g. misconfiguration, so it makes sense to maximize it to attract attention of the developer.