performance improvement for line count

previously we were counting each line when it was tokenized. we only needed the
line count for when an error was thrown so there was no point in making
non-errored templates suffer the performance hit.

instead of `#shift`ing from an array in the tokenizer we're storing a counter in
the array, that way we can determine line number on error by counting the
newlines in the array before the token that caused the problem.