[hack] Upgrade coroutine.ml to support multiple path or file arguments
[hack] Upgrade coroutine.ml to support multiple path or file arguments

Summary:
Prior to this diff, `coroutine.ml` assumed that there was a single source file of interest when running the test. You could provide additional source files using the `--hhi-dir` flag. This is not as flexible as it can be.

Now, it support //multiple// source paths or directory paths. So, e.g., you can run

```
buck run mode/dbg hphp/hack/test/facebook/coroutine:coroutine -- \
  hphp/hack/test/facebook/coroutine/tests/coroutine_suspend_throw.php \
  hphp/hack/test/facebook/coroutine/tests/coroutine_lambda.php
```

And it will lower //both// of these files, concatenate the output, and produce the result.

It also supports directories! So for arguments' sake, you could run

```
buck run mode/dbg hphp/hack/test/facebook/coroutine:coroutine -- \
  hphp/hack/test/facebook/coroutine/tests/coroutine_suspend_throw.php \
  hphp/hack/hhi/coroutine
```

This ends up lowering `hphp/hack/test/facebook/coroutine/tests/coroutine_suspend_throw.php`, `hphp/hack/hhi/coroutine/classes.hhi`, and `hphp/hack/hhi/coroutine/interfaces.hhi`.

You probably see where I'm going with this... I'll use this to pull in both the HHI standard library, a hidden coroutines standard library, and a coroutine test file. And they'll all be treated the same way. That will all come in a later diff.

The type check test has been updated a little. We don't want to spit out //all// of the lowered source if there's an error. That would be a //lot// of files, and, since the output references line/position numbers, we really should only spit out one file with errors, so that the lines and positions will line up. Basically, what I've updated it to do is, if there's a type checker error, I'll figure out which file caused the toplevel part of the error, and emit the lowered source of this particular file.

Reviewed By: ericlippert

Differential Revision: D5293095

fbshipit-source-id: 8d62a2ed86c30dce6c083dc30b74898b32af9427

AgentME/flow,gabelevi/flow,jamesgpearce/flow,nmote/flow,AgentME/flow,facebook/flow,TiddoLangerak/flow,MichaelDeBoey/flow,popham/flow,nmote/flow,popham/flow,AgentME/flow,mroch/flow,AgentME/flow,facebook/flow,jamesgpearce/flow,MichaelDeBoey/flow,nmote/flow,samwgoldman/flow,claudiopro/flow,jamesgpearce/flow,samwgoldman/flow,mroch/flow,gabelevi/flow,JonathanUsername/flow,nmote/flow,MichaelDeBoey/flow,MichaelDeBoey/flow,ylu1317/flow,samwgoldman/flow,nmote/flow,samwgoldman/flow,mroch/flow,ylu1317/flow,facebook/flow,nmote/flow,gabelevi/flow,mroch/flow,samwgoldman/flow,gabelevi/flow,popham/flow,ylu1317/flow,JonathanUsername/flow,mroch/flow,TiddoLangerak/flow,mroch/flow,gabelevi/flow,popham/flow,AgentME/flow,TiddoLangerak/flow,JonathanUsername/flow,JonathanUsername/flow,gabelevi/flow,facebook/flow,JonathanUsername/flow,popham/flow,claudiopro/flow,facebook/flow,jamesgpearce/flow,mroch/flow,ylu1317/flow,popham/flow,facebook/flow,jamesgpearce/flow,popham/flow,ylu1317/flow,claudiopro/flow,facebook/flow,TiddoLangerak/flow,MichaelDeBoey/flow,gabelevi/flow,JonathanUsername/flow,jamesgpearce/flow,samwgoldman/flow,claudiopro/flow,jamesgpearce/flow,samwgoldman/flow,JonathanUsername/flow,claudiopro/flow,nmote/flow,TiddoLangerak/flow