Added rewind() to TokenStream

I added `rewind()` to `TokenStream`. `look()` now uses it to get the next token and then rewind. `push()` is still there and working, but I'm not sure if it should still exist.