All of the work that you're doing here actually belongs in the `xhtml-sax-listener`. The lexer is responsible for taking in strings of characters and grouping them in to logical HTML tokens, the parser is responsible for classifying these tokens according to the XHTML grammar and the `xhtml-sax-listener` is responsible for actually doing interesting things based on events managed by the parser. Deleting things with a certain class, ignoring white space, stripping certain tags, fixing nesting etc. are all things for the sax listener.

All of the state that's not specifically necessary for interpreting grammar should also be in the listener.

Currently, we have some things in the parser that should be there, especially where they're directly managing the listener state (for example the `fixNestingBeforeOpeningBlockTag` call), but we want to move away from that as much as possible. The `xhtml-parser` should actually be much simpler than it is.

I would do this by:
* Adding a `WYMeditor.XhtmlSaxListener._shouldRemoveTag` method that looks at the class attributes to determine if it has the `EDITOR_ONLY_CLASS`
* In `WYMeditor.XhtmlSaxListener.prototype.inlineTag`, check if `_shouldRemoveTag` and if so, don't add to `this.output`
* In `WYMeditor.XhtmlSaxListener.prototype.openBlockTag`, if you `_shouldRemoveTag`, then set a flag on the listener. `this._insideTagToRemove` to true and use another variable to keep track of where you currently are on the tag stack. Make sure and only do this check if you're not already `_insideTagToRemove`.
* Then, in all of the other listeners that add to `this.output` (eg. `addContent`, `openBlockTag`, `inlineTag`, `closeBlockTag`, `closeUnopenedTag`, etc), check the `_insideTagToRemove` flag and if it's `true`, don't actually add to the output.
* In `WYMeditor.XhtmlSaxListener.prototype.closeBlockTag`, if the flag is set, but we're back down to the same place on the tag stack that triggered the flag, flip the flag back