This patch adds support for editor commands that allow refactoring to be used in editor clients like libclang or clangd.
An editor command can be bound to an refactoring action rule. Once it is bound, it's available in editors that use the supported editor clients.
I plan on sending out a follow-up patch for clangd support tomorrow.
Does this need to be an interface + implementation + template parameter - can it just be a struct? I think it's static data per instance.