Chat tab completion

Here's tab completion for chat.  Three questions:

* is it okay that I call a Template function directly?  Should I instead refactor `Template.chat_header.whos_here()` to call a new backend function?
* I used `cscott: foo` style completion, even though I saw some people using `@cscott foo` during the hunt last year, because I like tab to only append characters rather than replace previous ones.  Agree?
* If there's more than one possible completion, this doesn't cycle through all possible ones.  Worth fixing?

Thanks!