Simplify streaming code.
Simplify further. New args to example script. Update documentation.
Use timeout and block args for all streams in example.
Better help for example.
Explicitly control heartbeat timeouts.
Further simplification in progress.
Let's use the stdlib io system for great sanity.
Fix Python 3.x support.
Merge pull request #205 from sixohsix/stream_cleanup

Explicit support for heartbeat handling
Yet another crack at the stream iterator.

Now we explicitly track timeouts and heartbeat timeouts separately. Regular timeouts produce `Timeout` tokens (dicts). Heartbeat timeouts produce `HeartbeatTimeout` and StopIteration if iterated again. This is a solid fix for issue #202.

If the stream is set to use `timeout=None, block=False`, then we yield only data or `None`. If `timeout` is set to a number, we yield data or `Timeout` tokens, never `None`. If we are set to `block=True` then we yield only data.

Also: improve the documentation and remove some code weirdness.

Also: make the example stream program highly configurable to test every bizarre combination from the command line.