Rework pydfu.py to support .dfu files.

You can now use ./pydfu.py -l to list available DFU devices.
You can now use ./pydfu.py -u firmware.dfu to program .dfu files.
Made --mass-storage be an option, and it now erases pages as needed
by default rather than erasing everything.

I didn't maintain support for raw binary files, but that would be
easy to add back if needed.

The file is now mostly pep8 and pylint clean.