File::getTokensAsString(): prevent endless loop
File::getTokensAsString(): prevent endless loop

As discussed in issue 2042, this adds an exception to the `File::getTokensAsString()` method for when the value of the `$start` parameter is invalid.

As for the `$length` parameter, I've chosen to just bow out early in that case.

Note: I've tested adding an exception for the `$length` parameter as well, but that would actually give issues with at least one existing PHPCS native sniff, so this is the more elegant solution.

The existing issue is with the function call on line 309 of the `AbstractPatternSniff` in combination with the `PEAR.ControlStructures.ControlSignature` sniff. I haven't looked into that issue any deeper though.

Fixes 2042

squizlabs/PHP_CodeSniffer,stronk7/PHP_CodeSniffer,jrfnl/PHP_CodeSniffer,jrfnl/PHP_CodeSniffer,squizlabs/PHP_CodeSniffer,stronk7/PHP_CodeSniffer,squizlabs/PHP_CodeSniffer,jrfnl/PHP_CodeSniffer,stronk7/PHP_CodeSniffer