Move to Soft FIFO and fix many transport bugs.

* Moved to HDL defined FIFO ontop of a SRAM, which is more verbose
  for development
* Added tests to new soft fifo
* Fix double write bug due to incorrect pready behavior in the HDL
* Add available register which says how much space/data is available
  in the fifo
* Use the available flag to maximize each DMA transfer
* Add debug register
* Update mock exciter to have new registers