Fix Firmware Update from Piksi Console

Fixes critical firmware update bug #89 and increases robustness of Piksi Console firmware update - should be able to update from any older firmware to any newer version, and also should be able to update if user's firmware is corrupted. Firmware update is now its own tab rather than a popup window.

Closes #113, #114, #111, #100, #89

<!---
@huboard:{"order":115.75,"milestone_order":118,"custom_state":""}
-->

When checking if something is `None` in python its better practice to do `if timeout is None` than `if timeout`. Otherwise other values (e.g. 0 in this case) that correspond to false will fail the test.