oob_gc: reimplement to fix breakage and add tests
This was broken since v3.3.1[1] and v1.1.6[2] since nginx relies on
a closed socket (and not Content-Length/Transfer-Encoding) to
detect a response completion. We have to close the client
socket before invoking GC to ensure the client sees the response
in a timely manner.
[1] - commit
b72a86f66c722d56a6d77ed1d2779ace6ad103ed
[2] - commit
b7a0074284d33352bb9e732c660b29162f34bf0e
(cherry picked from commit
faeb3223636c39ea8df4017dc9a9d39ac649b26d)
Conflicts:
examples/big_app_gc.rb
lib/unicorn/oob_gc.rb