preflight: create preflight worker as detached thread and handle errors
device: suppress 'error reading from client (0)' which is not actually an error
Use plist_dict_set_item() instead of deprecated plist_dict_insert_item()
client: add a bunch of comments and function docs
device: more aggresively send ACKs when receiving TCP data

Before this it seemed that we only ever sent ACK when
timing out... Looks like a perf double when reading.
device: fix potential integer overflow in mstime64() on 32 bit systems
device/utils: move mstime64() into utils since it is generally useful
usb-linux: add some explanatory comments to usb-linux.c
usb-linux: massive read perf improvement with 3 parallel transfers

By maintaining 3 parallel usb trasfers when reading we get 2-3x more
throughput when reading. Without this the usb port is mostly just idling.
I get 23mb/s on my system compared to a clean Apple stack that gives me
17mb/s.

3 was chosen because it is simple to hard code, gives very good performance,
and have very little impact on out resource consumption.
Update command usage output to match best practice and other tools
Add "--version" option to print version number and exit, useful for bug reports
preflight: Unset preflight callback data when no longer needed to prevent segfault
utils: Add missing plist_read_from_filename() helper
Fix connection abort if device buffer is full

When trying to upload a IPSW filesystem to an iPad, the process would
randomly stop somewhere at 3% or 10%. It is possible that the receive
buffer of the iPad is full. To prevent erroring out because size ==
conn->sendable == 0, skip reading from the client.

There is a similar case where the clients is ready to accept data, but
the device has no data to send. Apply a similar fix there.

Hopefully the device is fast enough to reply in the next main loop
iteration, otherwise the CPU usage of usbmux will spike because the
client socket is ready while there is no data to process...
Fix detection of new "-V" version argument
client: Fix crash that occured when receiving client command from old client
device: Add protocol version 2 support
Use protocol version 2 by default
Properly rename header guards according to C++ standard
Merge branch 'master' of https://github.com/libimobiledevice/usbmuxd