Replace Xilinx core configuration with Xilinx API (DMA core).
Add the shadow registers to the driver.

This fixes the following bug:
When one function changes one bit in a register that is shadowed, but a
transfer in not initiated, and then another function makes some changes
in the same register, the information form the first functions is lost
due to the fact that a transfer is not initiated.
The shadow register that are used by the driver keep track of all
changes made by functions.