USB fix using a FIQ to implement split transactions

This commit adds a FIQ implementaion that schedules
the split transactions using a FIQ so we don't get
held off by the interrupt latency of Linux
Fix for Dequeueing issue

Main problem was that it is possible to leave a qh in a state where it has
not been queued (i.e. the channel has not been set up) but has been selected
for queueing.  This was then being removed from the non_periodic_sched_assigned
queue which would mean that the channel would never get released.

This fix allows a qh to continue on to be sent out and left to be halted when
it has finished.