more robust ftdi detection.

Conflicts:
	serial/tools/list_ports_windows.py

Augh. I'm not sure what happened with all this committing/cherry-picking.
I've ended up bringing in some extra stuff in this cherry-pick? Or maybe
I've avoided it? I'm sorry.