fix LwtSysUtils.exec on Windows
fix LwtSysUtils.exec on Windows

Summary:
`Lwt_process.spawn` (which is called by our `LwtSysUtils.exec`) calls ocaml's `Unix.execvp` on mac/linux, but directly calls [`CreateProcess`](https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa) on Windows. `Unix.execvp` on Windows also calls `CreateProcess`, but first it resolves the command to an absolute path using `SearchPath` (via `caml_search_in_path`).

Since Lwt bypasses that, `Lwt_process.spawn ("foo", [|"foo"; "bar"|])` runs `foo` from the path on linux, but fails with `ENOENT` on Windows.

However, the command name is optional to `CreateProcess`. If you don't, it searches for the first token of the command *line* on the path and runs that, just like we want!

So, `Lwt_process.spawn ("", [|"foo"; "bar"|])` runs `foo` from the path on Windows. It also works on unix, because `Lwt_process.unix_spawn` [handles the ""](https://github.com/ocsigen/lwt/blob/9943ba77a5508feaea5e1fb60b011db4179f9c61/src/unix/lwt_process.ml#L147).

Changelog: [fix] Fixed calling `watchman` on Windows.

Reviewed By: samwgoldman

Differential Revision: D32021317

fbshipit-source-id: 760a9c98f80acc64a0e8705d763a5df0f9b5ac86

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