Linux: fire multiple URBs at once for split transfers

This results in a significant performance increase for bulk transfers
larger than 16kb, and fixes a bug where data would be spliced and mixed
between two simultaneously submitted transfers to the same endpoint.

It also allows isochronous transfers larger than 16kb to be submitted.

This commit also improves cancellation - the library now understands
what is going on.
diff --git a/TODO b/TODO
index b9bf475..bf4d27c 100644
--- a/TODO
+++ b/TODO
@@ -1,13 +1,11 @@
 for 1.0
 =======
-cancellation race concerns - better tracking of kernel feedback?
 thread safety
 error codes
 fixme review
 review functionality missing over 0.1
 endianness of control setup, issues when resubmitting transfers
 doxygen warnings
-isochronous sync I/O?
 
 1.0 API style/naming points to reconsider
 =========================================
@@ -19,3 +17,4 @@
 notifications of hotplugged/unplugged devices
 use poll() rather than select()?
 offer API to create/destroy handle_events thread
+isochronous sync I/O?