Basic UAVCAN support

DO NOT MERGE.
Let me throw it at the ground and miss first.
Your arguments make perfect sense. Just be aware that any of this causes a crash, even if its a transient symptom (the null pointer is an odd case, I was more referring to the min / max checks). So while it might make sense during bring up, we don't want to proceed to flight tests with it.