Add a test to verify "close" is called in all engines on client gc

This test verifies that "close" is called in all engines when a client
is removed due to timing out. This was written while updating
faye-redis-sharded for newer versions of Faye, as it did not have the
correct behavior.
Add an engine spec for premature client removal.

While reviewing faye-redis-sharded code, I noticed that clients when
added were added with a time of 0, and not immediately pinged (like in
faye-redis). This spec verifies that a gc run after creating a client
won't remove the client.