Remove PAM dependency code.
The libpam dependency was brought 3.5 years due to c-client.  As of today,
there's no need neither in HHVM or c-client to link against libpam.
HHVM itself does not depend on boost_regex.
Only third-party/folly depends on libboost_regex, but HHVM has a
dependency that causes a bogus linkage in the final binary.

Sync with Debian patch 09_remove_boost_regex_hhvm.patch from 2.4.1-1.
Disable bogus code for finding and linking against ncurses.
For some very old reason lost in the dawn of time, HHVM imported the
CMake file of Readline from KDE, which had an ncurses dependency. Remove it
from everywhere.

Sync with Debian patch 08_disable_libncurses.patch from 2.4.1-1.
mediawiki at 100%

- Update our branch to have another test fix (incorrect usage of group Database)
- Re-record
- Modify suite.xml instead of trying to pass --excluded-group

Will PR the changes to mediawiki once Travis has HHVM 3, as they'd currently introduce failures.

Reviewed By: @JoelMarcey

Differential Revision: D1226556
Assert property repoAuthTypes in debug builds

This asserts the types hhbbc has inferred for properties
whenever they are read from, if it's a debug build.  It caught that
I'm leaving Closure use var properties as Uninit (harmless, but
technically not so cool).  We could also assert them on sets, but for
now just doing gets.  (Sets are slightly more painful, since the
places that actually do the set are a lot more spread out.)

Reviewed By: @dariorussi

Differential Revision: D1226026
Remove ObjectData:: and Object:: iter functions

They are only used in two places, and we're trying to phase
out MutableArrayIter.  There was one fairly new use in collections---I
think it can just be ArrayIter (tests pass at least).

Reviewed By: @elgenie

Differential Revision: D1223352
Fix incorrect MIterInit code gen to punt

It claims it works on BoxedCell, but if you pass it a
BoxedCell that dynamically contained an array it's going to do a no-op
instead of iterating the array (new_miter_other only contains a TODO
about raising warnings and then returns 0).

Reviewed By: @jasone

Differential Revision: D1223386
Remove RefData::refDataFromVariantIfYouDare

We used to not have a RefData.  But now this is weird.  (And
also implies unnecessary KindOfRef checks.)

Reviewed By: @jasone

Differential Revision: D1223398
Remove the only use of MutableArrayIter

Reviewed By: @ptarjan

Differential Revision: D1223420
Combine MArrayIter and FullPos into one class

Now that MutableArrayIter is dead, no need for the two
things.  Also delete the copy constructor and copy assignment
operator.

Reviewed By: @edwinsmith

Differential Revision: D1223447
Genericize HHBBC::SStringOr into a Either<L,R> class

This is a fairly common idiom.  I thought I might use it in
FullPos, so I genericized it, but I'm not 100% sure if I'll use it
there yet.  (Also, uses in things like iterators probably would
justify an API that gets the thing without a type check.)  Seemed
worth committing for now anyway.

Reviewed By: @alexmalyshev

Differential Revision: D1223461
Remove a few dead function prototypes

These are gone.

Reviewed By: @edwinsmith

Differential Revision: D1223466
Resume async functions quickly

Avoid execution of Continuation's send() and raise() methods when
resuming async functions. Reenter directly into the inner continuation
function.

Reviewed By: @jdelong

Differential Revision: D1222242
Don't template SetOpElem and IncDecElem on op

It just ends up being an argument to another function. I did the same
thing for SetOpProp and IncDecProp a while ago in D801633 but must've forgotten
about these at the time.

Reviewed By: @edwinsmith

Differential Revision: D1223432
A few minor tweaks/fixes

- Clear the SimpleXml error at the beginning of each request
- More detailed logging when we fail to bind our listening socket
- Fix a spelling mistake in Transport::setCookie

Reviewed By: @jdelong

Differential Revision: D1225962
Fix hhvm --php -d - bad temporary filename, parsed as hdf

- breaks phpunit runInSeparateProcess
 - '-c' and filename need to be two args - this was interpreted as adding an extra space, leading to file not found
 - temporary ones don't end in .ini

refs facebook/hhvm#1904

Reviewed By: @ptarjan

Differential Revision: D1224939
add better hhbbc asserts

Reviewed By: @jdelong

Differential Revision: D1226118
Constify the interface to Simplifier

Since Simplifier can now easily return instructions without dests, it's
practical to have it stop mutating instructions in-place and start
always returning newly gen'ed instructions all the time.

This is kind of a big diff, so here's a rundown of the major points:

- optimizeInst and optimizeWork are consolidated into a mostly-sane,
  unified interface to simplifier/cse.

- The weird hack to block cse in optimizeWork is gone; we can tell
  exactly when cse should and shouldn't be done.

- IRBuilder's calling directly into simplifyAssertTypeOp was pretty
  sketchy; I moved it up to the "preOptimize" family of function in
  IRBuilder. (Adapting it to stop modifying its input would have gotten
  quite messy.)

- In-place modification in simplifier is gone, and for the most part
  they're pretty trivial to change.

Reviewed By: @swtaarrs

Differential Revision: D1227121
Add exception barriers before jumps to retain spillstacks

This fixes a subtle bug that was breaking a flib test.  The bug manifested like this:

- before jumping to a merge point, the stack pointer has to be sync'ed using a SpillStack;
- at a merge point we insert a DefSP to prevent any future instructions from walking the SP chain back into one of the conditionals;
- because the DefSP redefines the SP, the earlier SpillStack was being DCE'ed.

The solution here is to just put an exception barrier after any spill associated with a jump.  At first, this seems kind of heavy handed,
but (a) it's conditional on using HHBC control flow, and (b) SpillStacks don't really tend to get DCE'ed anyways.

Reviewed By: @edwinsmith

Differential Revision: D1221048
add a few funtions to the language

These are functions that are baked into the typechecker to help express things that we don't have syntax for. E.g. we can't annotate a function that guarantees its first parameter is true after it has executed, so we need `invariant`, etc.

Reviewed By: @jwatzman

Differential Revision: D1210453