Moved Undo implementation entirely into File class