Add a `visible` flag on selection objects
Add a `visible` flag on selection objects

FEATURE: It is now possible to write your own
[`Selection`](##state.Selection) subclasses and set the editor
selection to an instance of them (provided you implement all required
methods and register them with
[`Selection.jsonID`](##state.Selection^jsonID)).

BREAKING: The JSON representation of selections changed.
[`fromJSON`](##state.Selection^fromJSON) will continue to understand
the old representation, but if your own code touches the JSON data,
you'll have to adjust it.

ProseMirror/prosemirror-state