Refactor the queued streamer a bit

This change refactors the queued streamer to hopefully make it a bit
simpler in a few places.

- Rather than having `get_reader` and `get_writer` be both request
  methods and configurator directives just use request methods. This
  eliminates the nasty partial stuff.
- Pass the settings to the IQueueHelper implementation rather than
  on every call to `get_reader` or `get_writer`.
- Store the queue as a class attribute of the `StreamerSession`.
- Track active session instances with a `WeakSet`.
- Start the reader when the first client connects.
- Skip including the streamer module entirely when the feature is
  disabled, by moving that check to the h module include.
- Register an instance of `IQueueHelper` rather than the class itself.
  Otherwise, we would name the interface `IQueueHelperClass`. Add
  the zope.interface.implements decorator to the implementations to
  make this more clear. Looking up a utility by an interface should
  always give an instance of something which implements that interface,
  not a factory or constructor for it.
queue: Interface definitions don't take self

http://docs.zope.org/zope.interface/README.html#defining-interfaces
streamer: Add test demonstrating reader not started
streamer: Don't shadow pyramid_sockjs queue

This class attribute was shadowing an internal queue used by
`pyramid_sockjs` and as a result the queue reader was never being
started in `StreamerSession#on_open()`.

See: https://github.com/fafhrd91/pyramid_sockjs/blob/d5bf8a9/pyramid_sockjs/session.py#L49