Added timeout handling + --flags + json output

- Last command line argument is the scale to select (int >= 0)
- Re-check first byte of the scale's response every 100ms (by default, can
  be changed with the --retry flag)
- Timeout on the scale's response after 3000ms (by default, can be changed
  with the --fail flag)
- output is formatted in json, either:
    {"success":true, "weight":1.15, "units":"lbs"}
  or:
    {"success":false, "error":"Something's gone wrong!"}
Fixed timeouts, renamed Example.cs -> UsbScale

- earlier I was calling scale.Read(retryTimeout), which is wrong because
  the retry time is supposed to be the gap between failed attempts, not
  the wait time for the USB to respond.
- renamed Example.cs to a Real Name.