Improve JS extraction from HTML. Fixes gh-1942

When there were no lines before a <script> fragment and the previous fragment,
or if there was no previous fragment before a <script> fragment, the parser
would throw. This is corrected.

Thanks to @alex-macaulay for proposing this patch.

Closes #1942
Correct line number for "lonely setter" warning

Although the openening block body token is most commonly written on the
same line as the accessor name, JSHint should generate a warning in
terms of the name token's line in cases where they differ.
Warn about "lonely setters" in class bodies

Closes #1949