Issue title: Make TokenStream an Iterator
 Issue body: **Is your feature request related to a problem? Please describe.**
I could be overlooking something, but it seems to me like TokenStream should be able to implement the Iterator interface.

**Describe the solution you'd like**
impl Iterator<Item = &str> for TokenStream

**[Optional] describe alternatives you've considered**
maybe something about lifetimes, composability, mutability or utf-8 strings does not work out

 Comments: 
 Comment 0: That's not possible because of the lifetime of your `&str` and the need to modify the original string.

Closing the issue but feel free to counter argue with an implementation that takes a string and returns an iterator to lowercased separated `&str` tokens.
{'source': 'GithubIssues', 'repo_name_with_owner': 'tantivy-search/tantivy', 'issue_id': 538297023, 'repo_stars': 5190.0}