Source editor performance w/large forms, fix #848
- don't be incremental; send updates to server on blur
  - rely on CodeMirror `change` event
- introduce distinction between init() and enabled()
  - when dialog closes, server clears the value (value change)
  - dialog shown for the second time, not value change
  - if just init, init doesn't run, value isn't set, editor is blank
- don't disable button, since not incremental
  - instead prevent action if invalid
- value set on blur resets editor position
  - happens when server sends the new value
  - fix by not updating CodeMirror value if value hasn't changed