Don't delete lines following lex'd `ignore:end`. Fixes gh-1879

Previously, lines would be cleared (set to the empty string) even after `ignore:end`
is found, if the comment was not processed first.

This change performs some minor comment processing in the lexer itself in order to
solve this problem.

This is a hack, ideas are welcome.

Closes #1879
I like this because it makes the `state` object just a little easier to understand--details that are specific to the lexer are contained within it. I think references to this property can safely be removed from [`doOption`](https://github.com/jshint/jshint/blob/d0b3cfd935c9445f14b37ea9694d8a172a52739a/src/jshint.js#L836-L841) and [state.js](https://github.com/jshint/jshint/blob/d0b3cfd935c9445f14b37ea9694d8a172a52739a/src/state.js#L23-L24), too. And what do you think about formally initializing the property in [the `Lexer` constructor](https://github.com/jshint/jshint/blob/d0b3cfd935c9445f14b37ea9694d8a172a52739a/src/lex.js#L84-L121) (possibly copying the comment from state.js)?