Rename `next()` method to `pull()`

Renaming methods to make it easier what it does and to which interface
it belongs
Implement iterator pattern on XmlLexer

Changed the way iteration works, so now lexer needs to call
`lexer.tokens()` to iterate over all tokens in a loop.