Drop asynchronous WriteFile on Windows

Set timeout using SetCommTimeouts. Leads to simpler
code for hid_write.
Implement verbosity level/flags

Replace verbose boolean with verbosity flags,
and reimplement error/info as macros around message.
Always define NDEBUG to keep assertions
Fix timeout behavior in teensy_program
Report error on Windows if hid_write is partial
Try harder to open device node on Linux

Node in /dev may not be ready when udev reports new device. Try
again after 500ms if it fails.
Rename teensy_mode to teensy_probe

teensy_probe is more accurate, as it searches the device using
USB topology (to accurately locate the Teensy despite its USB mode).
Cosmetic changes