Added methods setHtmlWithRange2 and getHtmlWithRange to bender.tools.
Made bender.tools.getHtmlWithRange() use element clone to preserve DOM structure of the original element.
Fixed: setHtmlWithRange2 does not purge markers in case of invalid range.
Simplified: text marker detection and replacement in setHtmlWithRange2.
Renamed getHtmlWithRange -> getHtmlWithRange2.
Added methods bender.tools.set/getHtmlWithSelection2.
Renamed in bender.tools: set/getHtmlWithRange2 -> set/getRange, set/getHtmlWithSelection2 -> set/getSelection().
Fixed: Prevent selectionChange from being fire in bender.tools.setSelection until selection.selectRanges is called.
Fixed: Use absolute reference to methods to avoid failures when called statically.
Fixed: Leave the decision whether to use bender.tools.fixHtml or not with bender.tools.getRange up to developers.
Fixed: Throw error in bender.tools.getSelection if there's more than range in the editor.
Marked old method as deprecated.
Moved range/selection tools to their namespaces.
Micro optimization - one less getSelection().
Human parser in action.
Merge branch 't/12071'