SIGTTIN works after SIGWINCH

In addition to SIGHUP, it should be possible to gradually bring
workers back up (to avoid overloading the machine) when rolling
back upgrades after SIGWINCH.

Noticed-by: Lawrence Pit
ref: http://mid.gmane.org/4C3F8C9F.2090903@gmail.com
(cherry picked from commit e75ee7615f9875db314a6403964e7b69a68b0521)
TUNING: more on socket buffer sizes

Large buffers can hurt as well as help.  And the difference
in real apps that do a lot of things other than I/O often
makes it not worth it.
(cherry picked from commit f9a7a19a361fd674bab4e2df7e0897015528bba7)
doc: update Sandbox document for Bundler

Thanks to Lawrence Pit, Jamie Wilkinson, and Eirik Dentz Sinclair.

ref: mid.gmane.org/4C8986DA.7090603@gmail.com
ref: mid.gmane.org/5F1A02DB-CBDA-4302-9E26-8050C2D72433@efficiency20.com
doc: update HACKING for documentation contributions

We switched to RDoc 2.5.x long ago and this should clarify
some documentation preferences I have.
avoid unlinking actively listening sockets

While we've always unlinked dead sockets from nuked/leftover
processes, blindly unlinking them can cause unnecessary failures
when an active process is already listening on them.  We now
make a simple connect(2) check to ensure the socket is not in
use before unlinking it.

Thanks to Jordan Ritter for the detailed bug report leading to
this fix.

ref: http://mid.gmane.org/8D95A44B-A098-43BE-B532-7D74BD957F31@darkridge.com
doc: update Sandbox document for Bundler

Thanks to Lawrence Pit, Jamie Wilkinson, and Eirik Dentz Sinclair.

ref: mid.gmane.org/4C8986DA.7090603@gmail.com
ref: mid.gmane.org/5F1A02DB-CBDA-4302-9E26-8050C2D72433@efficiency20.com
(cherry picked from commit 1a75966a5d1a1f6307ed3386e2f91a28bbb72ca0)
doc: update HACKING for documentation contributions

We switched to RDoc 2.5.x long ago and this should clarify
some documentation preferences I have.
(cherry picked from commit 505a9e72d320fe3ae521ceb0f381c1c0f5ae4389)
avoid unlinking actively listening sockets

While we've always unlinked dead sockets from nuked/leftover
processes, blindly unlinking them can cause unnecessary failures
when an active process is already listening on them.  We now
make a simple connect(2) check to ensure the socket is not in
use before unlinking it.

Thanks to Jordan Ritter for the detailed bug report leading to
this fix.

ref: http://mid.gmane.org/8D95A44B-A098-43BE-B532-7D74BD957F31@darkridge.com
(cherry picked from commit 1a2363b17b1d06be6b35d347ebcaed6a0c940200)
update Rails 3 tests to use Rails 3 final

Rails 3 is out, and requires no code changes on our end to work
(as far as our tests show :)
(cherry picked from commit da272fc48ffaa808456fe94dd7a3e01bc9799832)
unicorn 1.1.4 - small bug fix and doc updates

We no longer unlinking actively listening sockets upon startup
(but continue to unlink dead ones).  This bug could trigger
downtime and nginx failures if a user makes an error and
attempts to start Unicorn while it is already running.

Thanks to Jordan Ritter for the detailed bug report leading to
this fix.

ref: http://mid.gmane.org/8D95A44B-A098-43BE-B532-7D74BD957F31@darkridge.com

There are also minor documentation and test updates pulled in
from master.  This is hopefully the last bugfix release of the
1.1.x series.
Merge commit 'v1.1.4'

* commit 'v1.1.4':
  unicorn 1.1.4 - small bug fix and doc updates
  update Rails 3 tests to use Rails 3 final
  avoid unlinking actively listening sockets
  doc: update HACKING for documentation contributions
  doc: update Sandbox document for Bundler
  TUNING: more on socket buffer sizes
http_response: avoid singleton method

There's no need for a response class or object since Rack just
uses an array as the response.  So use a procedural style which
allows for easier understanding.

We shall also support keepalive/pipelining in the future, too.
split out worker to a separate file

This hopefully makes things easier to read, follow, and find
since it's mostly documentation...
http_request: avoid globals

Rainbows! will be able to reuse this.
tee_input: update interface to use HttpRequest

This should ensure we have less typing to do.
http_request: reformat and small reorg

This hides more HTTP request logic inside our object.
split out isolate usage/logic

We'll be using more of Isolate in development.
start using kgio, the kinder, gentler I/O library

This should hopefully make the non-blocking accept()
situation more tolerable under Ruby 1.9.2.
doc: update TODO

This gives us some things to think about.
Unicorn::Util.tmpio => Unicorn::TmpIO.new

This is slightly shorter and hopefully easier to find.