Make flash memory routines uninterruptible

There is a potential issue in the handling of flash memory reads and writes.  The routines that actually communicate with the flash chip were not protected from interrupts.  This means that they could be interrupted in the middle of sending a command to the flash chip.  This could be a source of issues and I had noticed in the past that sometimes modtool reflash or modtool push would take a variable amount of time to send the same file (sometimes >2x faster than others).  

This PR create two new functions (since the old macros only work for up to ~15000 cycles due to a limitation of the built-in disi instruction) and uses them to protect all memory routines that directly interact with the flash chip.

This change fixes the issue with variable modtool push and pull times as well at least I have not been able to reproduce the old variable behavior with this change.