dwc_otg: fiq_fsm: Base commit for driver rewrite

This commit removes the previous FIQ fixes entirely and adds fiq_fsm.

This rewrite features much more complete support for split transactions
and takes into account several OTG hardware bugs. High-speed
isochronous transactions are also capable of being performed by fiq_fsm.

All driver options have been removed and replaced with:
  - dwc_otg.fiq_enable (bool)
  - dwc_otg.fiq_fsm_enable (bool)
  - dwc_otg.fiq_fsm_mask (bitmask)
  - dwc_otg.nak_holdoff (unsigned int)

Defaults are specified such that fiq_fsm behaves similarly to the
previously implemented FIQ fixes.
Fix ARM architecture issue with local_irq_restore()

If local_fiq_enable() is called before a local_irq_restore(flags) where
the flags variable has the F bit set, the FIQ will be erroneously disabled.

Fixup arch_local_irq_restore to avoid trampling the F bit in CPSR.

Also fix some of the hacks previously implemented for previous dwc_otg
incarnations.
dwc_otg: add hacks for debugging network dropouts

- Make the HCD print out its entire internal state when smsc95xx
  detects a register read timeout
- Add a module for IRQ latency fuzz testing - irq_fuzzer.
  If inserted, this module will eat about 30% of CPU time
  randomly holding off interrupts. It will break lots of things
  in an attempt to speed up the failure of the dwc_otg HCD.

Use dwc_otg.fiq_fsm_enable=1 dwc_otg.fiq_fsm_mask=0x0
in the boot commandline.