Reorder functions in firmware code
Major API changes

teensy_t becomes reference counted and teensy_handle_t keeps
an active reference to it. Change various prototypes to go
with these changes (teensy_list, teensy_find, teensy_open) and
add some functions (teensy_ref, teensy_unref and teensy_free_list).
Improve list code in windows/usb.c

For now, fill serial number with 0 (instead of garbage).
Fix string_to_path (prevent -p from working)
Add serial number device matching (-s/--serial)