Implement interrupt driven canbus transmit and prevent lockups on error

Finish work started in the past update: added interrupt driven transmit (with software buffer) to further abstract library users from hardware details.

Updated the example program to use this new functionality.

Added code to automatically reset the canbus hardware if errors are happening.  Sketches will no longer lock up if canbus is not connected when the sketch is started.