CatchUp improvements
Catching up happens in its own thread, mining is blocked until catchup finishes.
Calling catch up will also freeze mining, although that piece isn't implemented correctly.
Pretty much the entire state needs to be re-thought in terms of thread safety.