Add drain-before-shutdown behavior (closes #24)

This changes the PushManager's shutdown behavior to drain the internal retry queue before gracefully closing connections.

This is a hopefully-simpler take on what was happening in #57.