Enable undo for name operations.

Implement CNameUndo and use it to correctly handle DisconnectBlock with
respect to name operations.