Conditional compiling and restart support

These modifications allow to build the library with only a specific communication driver (UART or Wiegand) for smaller code sizes.

It also brings a restart() method, the reasoning is detailed in the commit message.