Update folly
JmpSwitchDest has no destination tmp.

Fix ir.specification

Reviewed By: @jdelong

Differential Revision: D1116836
Prepare for enabling XLS register allocator.

Disable SIMD registers when using packed_tv.

Reviewed By: @jdelong

Differential Revision: D1102996
Don't include via datatype.h or via hphp-value.h

Right now, through this route (among others), nearly every
translation unit in the runtime includes
boost/interprocess/sync/interprocess_upgradable_mutex.hpp ... just in
case you might want to use it.

This diff doesn't solve the problem, it's just a start (all the other
sub-headers for complex-types.h do this same stuff right now).

Reviewed By: @edwinsmith

Differential Revision: D1114034
Don't specialize std::hash for char* in base.h

At least one call site may have been using the custom hash
inadvertently with AtomicHashMap but I preserved the behavior.

It seems like this is a little too dangerous, too.  If any translation
unit in the program uses std::hash<char*> without first including
base.h, we have undefined behavior.  Since we don't control a lot of
the code linked into our binary this seems like a bad idea.

(Plus it's just nicer to be explicit about whether a char* key is
being treated as just a pointer or as a C-style string at a use site
so you can tell what is going on.)

Reviewed By: @edwinsmith

Differential Revision: D1114035
Move the hphp_hash_* typedefs to their own header

Reviewed By: @ptarjan

Differential Revision: D1114036
Deprecate DECLARE_BOOST_TYPES, remove uses outside hphp/compiler

Reviewed By: @markw65

Differential Revision: D1114037
Delete some shared_ptr<FILE> stuff

FilePtr seemed strange to define in base.h.  Turned out only
process.cpp uses it.  FileReader at first seemed to be freeing FILE*'s
with delete, but it turned out the instance version of it was dead
code, and the class was really just a function.  The other site was
supposed to be a scope guard.

Reviewed By: @dariorussi

Differential Revision: D1114038
Remove a few typedefs for stl combinations from util/base.h

Reviewed By: @dariorussi

Differential Revision: D1114039
Move safe_cast out into its own header

Reviewed By: @dariorussi

Differential Revision: D1114040
Move hphpiCompat to its only remaining use site

Reviewed By: @markw65

Differential Revision: D1114041
Remove some unused, single-use, or excessively trivial helpers

A couple of these are only trivial-seeming because now we
have range-based for or lambdas.

Reviewed By: @markw65

Differential Revision: D1114042
Remove dependencies on util/base.h for map helpers

Just use count() for the fooContains ones, mapInsert didn't
do anything, move mapInsertUnique to its only user, use folly's
MapUtil.h versions instead for the other ones.

Reviewed By: @markw65

Differential Revision: D1114043
Remove typedef unsigned char uchar

Reviewed By: @edwinsmith

Differential Revision: D1114044
Move small function objects to their own header.

Reviewed By: @edwinsmith

Differential Revision: D1114045
Move util/json.h to compiler

It references compiler-specific types like AnalysisResult.
Replace the one live use of the JSON::Escape function from this header
in the runtime with folly call; other use is about to be removed in
another diff from dario.

Reviewed By: @dariorussi

Differential Revision: D1115340
Remove #includes of base.h from the headers in util/

And try to fix downstream indirect dependencies to include
what they use (plenty of indirect includes still missing, though).
Most TU's still get this all via the complex-types.h stuff.

Reviewed By: @dariorussi

Differential Revision: D1115342
Remove base.h includes from runtime/, fix up indirect dependencies

This probably just pushes a bit of it down to
runtime/base/types.h, but at least a few decent-sized includes are out
of every TU now (lexical_cast.hpp, iostream, boost/foreach, and
filesystem.hpp).  Haven't measured impact on build times if any.

Reviewed By: @edwinsmith

Differential Revision: D1115343
Add missing includes for OSS build

The removal of base.h includes left some missing
headers scattered around, mostly in util.

Reviewed By: @jdelong

Differential Revision: D1117195
XLS: Use vectors instead of lists for ranges and use-positions

lists are inefficient for the way we use these, vectors are smaller and faster,
enable binary searching (future), and typically short anyway.

Reviewed By: @jdelong

Differential Revision: D1116766