Remove unnecessary abstraction from fastcgi server

Summary: I did this while trying to make sense of the current setup. The
ProtocolSession class didn't appear to serve any purpose so it's been collapsed
into the only subclass. I've also added brief descriptions of most classes
describing their role in the server, and made a few other cleanup tweaks.

Reviewed By: @ptarjan

Differential Revision: D1476104
Properly shut down fastcgi worker threads when connection is closed

Summary: If the fastcgi connection from the webserver was closed while a
request was reading its POST data, the worker thread processing that request
would get stuck indefinitely waiting for the rest of the data to arrive. Given
enough time, all worker threads in the server could get stuck, causing the
server to become completely unresponsive until a restart. Make sure we notify
the appropriate condition variable to avoid this.

Reviewed By: @ptarjan

Differential Revision: D1476306