Move some code to undo.cpp.

Create undo.cpp as new source file and move some code related to undo opreations to it.  Also simplify DisconnectBlock a bit.

I guess it is a matter of taste whether one likes these changes or not.  But I think it makes sense to move the code now in `CTxInUndo::Apply` there and out of `DisconnectBlock`.  It makes both functions easier to read, IMHO.
Not sure this part belongs in undo.