PySerial has independent read and write timeouts

As detailed here, we need to set both:
http://pyserial.sourceforge.net/pyserial_api.html?highlight=timeout#serial.Serial.timeout

Setting the writeTimeout to 0 (i.e. just wait forever) - this appears to
work on Windows but haven't tried other platforms.

Got there via
http://stackoverflow.com/questions/18313022/pyserial-write-instant-timeout