Add dockable protocol and dockable controller, cribbed from the AppKit port.
Merge remote-tracking branch 'origin/master'