Support for Python3

The major changes:

- Wrapper functions for serial write and read. Python2 uses strings and
  Python3 uses bytes. The wrapper function handles the difference.
- Only use `ord()` in Python2. Bytes don't need this.
- General version checking when the bytes vs str distinction matters.
- Checking around other function name changes.
Added a serial flush in synch function. Sometimes the ACK from the sync (UU) wasnt being received due to other characters that were still present in the serial input buffer.
Check for serial library

Handle ImportError if the serial library is not found and print a
message about how to install for Ubuntu and Mac.
Fix for manual reset problem

Having to press a button or remove a jumper to use the bootloader is a
major hassle. This commit adds support in the BSL script for a
workaround using otherwise unused pins common on FTDI chips: DTR and
RTS. These are both outputs, and since they are not being used for flow
control they can be used to toggle the bootloader pin and the !RESET
line to enable the bootloader.

To have the BSL script automatically invoke the bootloader, pass the -i
flag when calling the script.
Merge pull request #2 from lab11/auto-invoke

Use DTR and RTS pins as a default solution to reset and start the bootloader
Merge pull request #10 from lab11/py3

Support for Python3