Add QRevisionTracker.swift

Basically just a wrapper around a weak reference to an NSDocument that
allows me to add blocks to an NSUndoManager.
Add revision tracker to QScheme object.

Debating whether this is actually sane or not, but since it operates
fine without a revision tracker, it should be alright.
Assign the scheme's revision tracker from the document.
RevisionTracker: remove extension; just retain an NSUndoManager.

Not yet sure why, but allocating the QRevisionTracker instance from the
extension seems to be causing an early release, so that needs working
out at some point.

In the meantime, this appears to avoid the issue: allocating it
directly.

No point retaining the document itself either, so this just takes an
undo manager and keeps a weak reference to it.

(Also fixed the file header.)
Remove PasteAux.swift

Unused.
Add revisionTracker member to QSchemeRule.
Add revision tracking to QSchemeRule members.

Self-reference should be strong because the rule itself may actually
go out of scope (i.e., gets removed from the rules list), but that
might be over-thinking it. Need to review whether it even needs
ownership, since ideally nothing needs to be retained for this.
Fix RawMask.swift file header.
Add colorProperties class variable to QScheme.

Just returns observable color properties. Necessary for hooking up some
stuff.
QScheme: Upon setting revisionTracker/rules, update held rules' trackers.

Because otherwise rules will just have their default no-op revision
trackers.
Add addRemoveButtons property to QRuleTableController.
Hook up rule add/remove buttons to QRuleTableController outlet.
Change F to I in rule flags buttons.

Not sure why it was F.. Anyway, I for Italic.
Change 'Flags' column title to 'Style'.

Doesn't affect the column identifier, so that continues to be
'rule_flags'.
QSelectorTableCon: Add needsUpdate property.

Used to disable the selectors update from observing the same
key ('selectors') of the selected rule.
Set needsUpdate to false for add/remove button presses.

reloadData will interfere with the behavior when performing these
actions, since reloadData will update the count, then insert/removeRows
will end up adjusting the count again. As a result, the data source
will be asked to yield rows that don't exist.
When removing selectors (via the button), modify a temp array and set it.

That way, the willSet/didSet/other observers will only be triggered
once.
Remove data reloadData in selector data source.

Not needed -- the observer will catch it.
QRuleTableCon: Wrap reloadData calls in method reloadData.

Want to do this now to have a good place to rebuild any other hooks I'd
need to.
EditorColorCon: add colorObserver property.

Holds an array of key-value observers. Disconnected on deinit.