Minor API changes
Cosmetic changes
Refactor list code in linux/usb.c
Refactor list code in windows/usb.c
Add warning compiler flags and fix many conversion warnings

In particular, -Wconversion requires casts all around but
fixes a few mismatches.
Add some assertions
Ignore start address records in HEX files
Use asynchronous IO on Windows

Beside the switch, add serial and HID read and write functions.
Change list mode argument to -L (--list stays)

Fix some white spaces around this code. Generate dynamically
the boards list in print_usage().
Add wait() for platform-independent poll
Add serial read/write functions
Change HID API (return ssize_t)
Fix device open flags on Linux
Fix STDIN being closed when probing device
Add preliminary serial terminal support (-S)