FileUndoManager: code modernization
- Use QVector rather than QList for large structs
- Rename m_opStack to m_opQueue since it's used as a FIFO
- use std::unique_ptr for the d pointer
- more const local vars
- initialize members at declaration time
- use range-for where appropriate
- add proper constructors for UndoCommand
- standardize on Q_ASSERT (there was a mix with assert)