Split option parsing to another class.

Summary: About to add moreoptions, threading them through is getting unwieldly.

Reviewed By: @JoelMarcey

Differential Revision: D1540300
Fix a comment relating to closure use vars

Summary: This was left over in #3599292, which was done, but there's nothing
more to do here.

Reviewed By: @mxw

Differential Revision: D1537585
Improved fix for issues with optional specialized array types in interp-minstr

Summary: Moves the changes to the handleBaseFooElem functions, and add some
documentation about what they are supposed to do now.  The bug was basically
that these functions were assuming that they didn't need to do anything about
inner-array-element cases, because the callers own that, and the callers were
assuming they only needed to continue array chains or otherwise deal with these
situations when the base type was a subtype of TArr.  But you'll notice in this
that no one was taking responsibility for handling the case where the base
couldBe(TArr), which needs to have some changes in case we're in the middle of
an array chain or operating directly on a local.  This makes handling that part
of the handleBaseFooElem functions.

Reviewed By: @markw65

Differential Revision: D1540665
Add max_file_uploads support

Summary: Mentioned in http://www.acunetix.com/blog/news/php-multipartform-data-denial-of-service/

Reviewed By: @JoelMarcey

Differential Revision: D1541705

Pulled By: @ptarjan
move creating the stacktrace.log file higher

Summary: I'm seeing lots of crashes which don't have this file. I would like to make it as early as possible. I tested, and this syscall makes a file with:

```
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>

int main() {
  open("/tmp/a.log", O_CREAT|O_TRUNC|O_WRONLY, S_IRUSR|S_IWUSR);
  raise (SIGKILL);
}
```

Reviewed By: @markw65

Differential Revision: D1535010
move creating the stacktrace.log file higher

Summary: I'm seeing lots of crashes which don't have this file. I would like to make it as early as possible. I tested, and this syscall makes a file with:

```
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>

int main() {
  open("/tmp/a.log", O_CREAT|O_TRUNC|O_WRONLY, S_IRUSR|S_IWUSR);
  raise (SIGKILL);
}
```

Reviewed By: @markw65

Differential Revision: D1535010
Allow specifying a path to siege, add version check

Summary: Siege 3.0.0-3.0.7 are broken on ports other than :80 and :443.
rrh contacted the author, and a fix is expected in 3.0.8. Allow specifying the path.

refs facebook/hhvm#3664

Reviewed By: @ptarjan

Differential Revision: D1543417
Improve process error checking in perf runner

Summary: - replace invariants with asserts
- check process running status immediately
- sleep a bit. proc_open always initially has a valid process, as it launches a shell

Reviewed By: @ptarjan

Differential Revision: D1543479
add constexpr to offsetof()-based methods

Summary: while reading the closure code for something unrelated, i noticed that some of the methods returning offsetof() were not declared `constexpr`. i swept the code looking for more.

Reviewed By: @bertmaher, @elgenie

Differential Revision: D1505156
ServerStats c++11 cleanup

Summary: while reading ServerStats, i noticed a lot of long-hand iterator code which could be made easier to read.

Reviewed By: @alexmalyshev

Differential Revision: D1490523
Track threads and their memory usage in hhvm

Summary: Trace calls to pthread_create to track thread creation. Track
their memory usage using jemalloc stats (using a MemoryManager
per thread). Export thread memory statistics to an admin
end-point (thread-mem).

Reviewed By: @ptarjan

Differential Revision: D1487876
refactor tc usage report and add tc usage stats to memory page

Summary: Refactored TC usage reporting and added tc usage to memory tracking page

Reviewed By: @bertmaher

Differential Revision: D1533678
Check the result of tellg in Scanner::computeMd5

Summary: Fail hard if tellg retuns -1 (error) or the result doesn't fit in a
32-bit int.

Reviewed By: @markw65

Differential Revision: D1532653
posix_getgrgid()['members'] should be empty array if no users found

Summary: Rather than null

Fixes one zend test
Closes https://github.com/facebook/hhvm/pull/3686

Reviewed By: @sgolemon

Differential Revision: D1541608
make slow tests pass on centos 6.3 cmake

Summary: There are only 2 tests which fail on our boxes, so I think skipping them is worth the effort to get all the extra testing.

Reviewed By: @paulbiss

Differential Revision: D1543645
Convert from jemalloc's obsolete *allocm() to *allocx().

Summary: Convert from jemalloc's obsolete *allocm() to *allocx().

Strengthen goodMallocSize() to always return a jemalloc size class, so
that xallocx() success/failure detection is simple.

Reviewed By: @andralex

Differential Revision: D1535841
Add option for saying which nginx binary to use

Summary: Some packages don't install it into $PATH

refs facebook/hhvm#3664

Reviewed By: @ptarjan

Differential Revision: D1544870
Use EqX instead of Eq for Obj/Num comparisons.

Summary: Converting an Obj to Int or Dbl will reenter the VM to raise a notice.

Reviewed By: @jano

Differential Revision: D1542454
Update third-party
Improve process cleanup for OSS benchmarker

Summary: - HHVM attempts to shutdown via admin server first. Catch failures there, and fall back on killing the process
- Check that the streams are still valid before attempting to close them

refs facebook/hhvm#3664

Reviewed By: @JoelMarcey

Differential Revision: D1545273