New Uploader Gadget

Brand new uploader gadget coded from scratch.
Removed all the stuff regarding chained devices handling.
Relies on the OS USB detecting mechanisms instead of dark delays.
Implements a partition browser for new bootloader.
Implements a user defined string which gets uploaded with the firmware.
And many many other things :)

Tested on Ubuntu 64 and Win7 64 

EDIT: Old uploader still present and it is the default, new one needs to be manually selected. Wizard uses the old one to auto update. After this is merged and tested by users I will delete the old one and refactor the Wiz to use it. 

EDIT2: Also added "reboot" as a function using the backup registers as opposed to the former method of sending the board to bl and then send a command from the gcs to boot 
Can we keep this line? Maybe add a comment saying to delete later. Changing FirmwareIAP is a PITA for the android app.