Performance boost: only look for indirect object offsets at start of line

Indirect objects should be preceded by EOL, so we can anchor the regex to
the start of line for a performance boost.  Also no need to be ungreedy.
Shift objstream extraction to findObjectOffsets()

This allows us to only search for the objects once - as we iterate
through them, we can then check if they are objstreams, processing them
if they are.
Use greedy match instead of preg_match_all to find startxref

Using a greedy match, we can avoid the need to use preg_match_all() and
array_pop() to get the last instance of "startxref".
Use strcspn() instead of preg for parsing name tokens
Performance boost: manually build 4-character chunk to switch on

Using string offsets to build the 4-character chunk seems to be faster
than using substr() to extract the same 4-character chunk, at least when
done many times on large strings.
Performance boost: call strspn() on individual chars to find object offset

In getRawObject(), calling strspn() on the full PDF data with an offset is
much slower than calling it on individual characters and incrementing the
offset for each match.