Improve tick()'ing

Allows `.tick()` to return values which determine if and when they are
re-ticked:
* Returning `None` will use re-call after `.update_interval`
* Returning a value will re-call after that value
* Returning `False` will not re-call

Also use `.call_soon_threadsafe()` in a couple places.
Add note on asyncio/trollius importing