Teach jshint the ignore directive.

Doesn't do anything with it yet, but it recognizes the valid values,
start and end. Anything else is thrown out as a bad option.
Disable linting when jshint ignore:start is set and re-enable when ignore:end is set.

While ignoring linter errors, transform the intervening lines of input
to empty string; blank lines shouldn't cause any linter errors.
Ensure that leading and trailing whitespace won't skip a /*jshint ignore:end */ directive.
Extract long code array to a test fixture.