Switch to stack-aware QUndoCommand derivative

This will be necessary for upcoming pointer-wrangling.
Undo/redo for adding link
Can't use QPointers, as they'll NULL themselves
Properly connect connections on deserialization
Working on UndoAddLinkCommand integration
Don't call checkDragTarget if already connected
Make undo work for link deletion
Adding command to change datum expression
Change terminology in UndoMoveCommand