Various re-working based on my experiences and fiddling:

 * Add a timeout to the wait_for_beacon() function (30 seconds) after
   which the USB device is reset and the process starts again.

 * Send a 'sleep' command to the tracker after a successful sync, based
   on the way the Windows software behaves.

 * Various changes to the main client function:
   + Write a brief log file to keep an eye on the status easily
     (/var/log/fitbit.log)
   + Make stdout line buffered for running under supervise/multilog for
     example.
   + Don't sleep for 15 minutes each time - since we now send a sleep
     command for the tracker it should make sense for the client program
     to listen for beacons all the time.
Add supervise/svscan run file.
log error to fitbit.log when it is a USB error
Move main logic into a FitBitDaemon class, and fix some logic to do
with object creation/destruction.  Also had to split some logic out of
the main/run function into try_sync, to avoid storing a reference to the
FitBitClient object in the stack frame of main/run when an exception
is thrown.
Tidy up the FitBitDaemon class.
fix missing format argument, and don't use a reserved word as a variable
name.
tidy up logging code a bit
use pass instead of dummy/empty string
move usb import into the only function that needs it
slightly more python-esque loop style.
remove unnecessary argument to log_field.
need explicit string conversion.
make the init code try harder to open the device
and loop forever until it succeeds.
remove alarm timeout, I don't think it's needed now that wait_for_beacon
has its own timeout.
use a larger receive buffer - seems a bit crude, but does seem to help.
Also fix what seems like a logic error in a condition.
Merge remote branch 'origin/bensmithurst' into bensmithurst
crude installer for svscan bits
terrible hack to prefer newer pyusb instead of system one.
move the evil path hack into svscan run file
increase timeout in wait_for_beacon