fix backtraces of uncaught exceptions in daemonized processes
fix backtraces of uncaught exceptions in daemonized processes

Summary:
`Printexc.to_string e`  calls into `Format` somewhere, which internally uses exceptions, which overwrites the current backtrace.

Given an exception like this:

```
 diff --git a/src/hack_forked/utils/sys/daemon.ml b/src/hack_forked/utils/sys/daemon.ml
 --- a/src/hack_forked/utils/sys/daemon.ml
+++ b/src/hack_forked/utils/sys/daemon.ml
@@ -147,6 +147,7 @@
   let () = Unix.set_close_on_exec (descr_of_out_channel oc) in
   let f = Entry.find entry in
   try
+    if true then failwith "test";
     f param (ic, oc);
     exit 0
   with e ->
```

you get this:

```
(Failure test)
Raised at file "format.ml" (inlined), line 242, characters 35-52
Called from file "format.ml", line 469, characters 8-33
Called from file "format.ml", line 484, characters 6-24
```

it's very important to capture the backtrace *right away*:

```
(Failure test)
Raised at file "stdlib.ml", line 33, characters 17-33
Called from file "src/hack_forked/utils/sys/daemon.ml", line 150, characters 17-32
```

Reviewed By: samwgoldman

Differential Revision: D22021140

fbshipit-source-id: 8bc95d74b973b466f4f270036e5c96d7a8fc9727

mroch/flow,mroch/flow,facebook/flow,facebook/flow,facebook/flow,mroch/flow,facebook/flow,mroch/flow,mroch/flow,facebook/flow,mroch/flow,mroch/flow,facebook/flow,facebook/flow