Implement ImagickDraw

Implement class ImagickDraw in Imagick extension (#954)

Reviewed By: @ptarjan

Differential Revision: D1188011
Move some container/collection stuff out

Very few translation units actually need the container
functions, compared to the number that include builtin-functions.h
somehow, so put them in their own header.  Also move getCollectionSize
out of ObjectData so we don't need to define
FAST_COLLECTION_SIZE_OFFSET from the complex-types.h cluster.

Reviewed By: @alexmalyshev

Differential Revision: D1210228
Move RequestInjectionData/ThreadInfo/ExecutionProfiler out

Reviewed By: @ptarjan

Differential Revision: D1210336
Remove the Opcode typedef

This turned out not so bad, probably in part because I mostly
just changed Opcode*'s to Op*'s without thinking about which ones
should've been PC.  The only hard part was I went down the wrong path
for Unit::offsetOf at first.

Reviewed By: @edwinsmith

Differential Revision: D1210620
CArrRef sucks

Second in the series.  (See D983915.)  Unlike that diff, I
found no cases of CArrRef(arrptr) unexpectedly doing c-style casts.

Reviewed By: @alexmalyshev

Differential Revision: D1210633
Remove CResRef typedef

The only oddity with this one was a place where someone was
taking a const CResRef& argument to a function.  (I guess reference
collapsing rules kick in for typedefs too, but I didn't realize
that...)  Again none of the accidental C-style casts with this one.

Reviewed By: @alexmalyshev

Differential Revision: D1210639
Remove CObjRef

Reviewed By: @alexmalyshev

Differential Revision: D1210641
s/CVarRef/const Variant&/

A few duplicate consts and refs to refs.  One weird place was
doing a const_cast<CVarRef>(foo) ... but I left that alone (just
expanded) for now.

Not quite the end of this style of thing---but those VRefParam-related
things are harder.  So I'm leaving them alone right now.

Reviewed By: @alexmalyshev

Differential Revision: D1210647
Update libzip

Reviewed By: @ptarjan

Differential Revision: D1203292
Remove type-array.h's dependence on complex-types.h

type-array.cpp now includes type-array.h

Reviewed By: @edwinsmith

Differential Revision: D1210664
Add Eval.AuthoritativeMode option

Adds an Eval.AuthoritativeMode option that causes the eval, create_function, preg_replace with eval, and hphp_set_property (in reflection) error messages to be thrown without requiring the set up that RepoAuthoritative would normally require.

This should make it easier to find cases where this might happen during development, especially if you are using third-party code that uses these features without you realising it.

Closes #1931
Github Author: James Miller <jamespocketrent.com>

Reviewed By: @jdelong

Differential Revision: D1210788
Fix parsing of Content-Type and Content-Length in FastCGI POSTs

FastCGI PARAMS (and CGI environment variables in general) include all
headers prefixed with HTTP_ except for CONTENT_TYPE and
CONTENT_LENGTH.  This handles these in FastCGITransport::getHeader()
so that other users of getHeader(), like the POST code, get the
correct values.

Closes #1985
Github Author: Jim Radford <radfordblackbean.org>

Reviewed By: @jdelong

Differential Revision: D1210796
Fix a bug in IterNext{K,}

The types that propagate across the taken edge should be the
types from the iterator, but we need to leave the fallthrough types
alone.  Oops.

Reviewed By: @jano

Differential Revision: D1205860
Constant propagate results of Same and NSame

That's all.

Reviewed By: @edwinsmith

Differential Revision: D1208316
Fix a bug in CGetL; FPushObjMethodD grouping

This can cause Index types to grow.  The first time through,
we might decide a function returns TObj because we had a TInitCell
base on a FPushObjMethodD.  The next time through, if we have a
specialized object type that is optional, we'll leave it as OptObj,
which isn't a subtype of what we inferred last time so it breaks index
invariants.

Reviewed By: @dariorussi

Differential Revision: D1209348
Untangle Object[Data] from complex-types.h

Can now include type-object.h and object-data.h without breaking.

Reviewed By: @jdelong

Differential Revision: D1210937
){ -> ) {

These annoy me

    codemod --extensions cpp,h '\){$' ') {'

Reviewed By: @jdelong

Differential Revision: D1210852
Remove immediate-handling from prepXMMReg()

X64 doesn't have double-precision instructions that accept
immediate doubles; there aren't any whitelisted cases in
mayUseConst(), so handling immediates here is dead code.

Reviewed By: @ottoni

Differential Revision: D1206290
Remove const handling from cgMov

It's dead code now that XLS honors srcConstraints.

Reviewed By: @oyamauchi

Differential Revision: D1206317
Break up AllocObjFast

AllocObjFast comprises many operations, including several
native calls, some of which can throw.  Since each call needs a catch
block, we have to split up AllocObjFast into smaller opcodes, which
has the nice side effect of making the code a bit cleaner.

Reviewed By: @swtaarrs

Differential Revision: D1209705