Don't allow null bytes in path-type arguments

Summary: CVE-2006-7243

Reviewed By: @sgolemon

Differential Revision: D1384585
Delete const_assert macro

Reviewed By: @alexmalyshev

Differential Revision: D1383263
Plausibly fix a race condition in the PhpFile unloading code path

Summary: After a PhpFile's reference count goes to zero, we put it on
the Treadmill, but it's still in the s_md5Files map.  Another thread
might load a file with the same md5 (in computeMd5), and then lead to
incRefing the PhpFile and using it again, and we'll hit the
always_assert in ~PhpFile when the treadmill runs.  Instead, try to
get it out of the md5files map earlier---this isn't quite enough
because another thread could still pull it out, so lookup sites also
need to check if the PhpFile has a non-zero reference count when it
comes out of the s_md5Files map.

Reviewed By: @mxw

Differential Revision: D1383518
Make most of FileRepository private to the cpp

Summary: I think the whole PhpFile thing can also be hidden internally
here if we move three related functions from ExecutionContext
(lookupPhpFile, lookupIncludeRoot, and evalInclude) and make them
return Unit*'s instead.  "Give me the Unit* for a path" seems like a
nicer API, but I'm not 100% sure if I like that route (mainly I'm
worried that the implementation here is too complex to add anything to
immediately---probably it should be simplified first).  I think this
is an incremental improvement worth taking on its own for now, though.

Reviewed By: @mxw

Differential Revision: D1383870
Delete PendQ; convert users to Treadmill

Summary: There were a few uses of this PendQ, which apparently defers
an event until the next request starts on this thread.  This must've
been added before the Treadmill, because the comments about mutex rank
at callsites were wrong now.  Also fix the thread-safety bugs with
ProfileController's orphaned units vector.

Reviewed By: @mxw

Differential Revision: D1383897
Remove unused std::strings m_profName, m_srcRoot from each PhpFile

Reviewed By: @mxw

Differential Revision: D1383904
Make lookupPhpFile and lookupIncludeRoot traffic in Unit* instead of PhpFile*

Summary: All anyone does with PhpFiles these days is get the Unit* out
of it.  (They used to reference count them, but Mark fixed that a
while back, and now it's a bit redundant.)  Trying to get them out of
the m_evaledFilesMap requires more testing (to ensure the keys are the
same as phpFile->getFileName)---maybe later.

Reviewed By: @mxw

Differential Revision: D1383936
Remove unimplemented inclued_get_data builtin

Summary: It doesn't returned any inclued data, and there seems to be
no php documentation about an API with this name.  (Or named
include_get_data for that matter.)  We've apparently had this thing
forever.

Reviewed By: @ptarjan

Differential Revision: D1383945
Some clean up on builtin-functions.{h,cpp} stuff

Summary: Remove a few unused or trivial functions, move autoload
handler to its own header, split the implementation for things that
were only used by autoload, pull some non-public functions out of the heade.r

Reviewed By: @mxw

Differential Revision: D1384138
clownlist flaky phpbb3 tests

Summary: Found via FB CI testing.

Reviewed By: @JoelMarcey

Differential Revision: D1390559