Have dfind use the same set / maps as the rest of the code

Summary: This avoids having to convert a DfindEnv.SSet into a
Utils.SSet by copying its members.

Reviewed By: @elgenie

Differential Revision: D1754873

Signature: t1:1754873:1419639676:148ca8db979eebfae35475237253167636e6946c
Don't have an optional param that's an option type

Summary: OCaml implements optional parameters as option types, so the
additional layer of option-ing is unnecessary.

Reviewed By: @elgenie

Differential Revision: D1758445

Signature: t1:1758445:1419723236:52b99d34e318be0b127b280cb82d01f934c30f4c
Improve fatal exception handling

Summary: Currently, when the server fails to generate a response, it
doesn't close the socket, leaving the client waiting indefinitely on the
open socket. This creates a poor user experience; some people wait for
many minutes (or retry the same command multiple times) before they give
up.

This diff ensures that we close the socket, as well as providing a
helpful suggestion (`hh_restart`).

Reviewed By: @elgenie

Differential Revision: D1758513

Signature: t1:1758513:1419719643:67136011c1621cddc36a39736ca3fd72f313ca0b