Create the hash queued work variant for use with devices that are fast enough to require a queue.
Create a fill_queue function that creates hashtables of as many work items as is required by the device driver till it flags the queue full.
Create a central point for removal of work items completed by queued device drivers.
Flush queued work on a restart from the hash database and discard the work structs.
Add a driver specific flush_work for queued devices that may have work items already queued to abort working on them on the device and discard them.
Add comments.
Add the choice of hash loop to the device driver, defaulting to hash_sole_work if none is specified.
Merge branch 'usb-dev' into queued_work
Add a get_queued function for devices to use to retrieve work items from the queued hashtable.