Print sources for store instructions as sources

I found it a bit confusing that we draw them as dests.
Change AttachString to copy

This modifies AttachString mode for string creation to immediately
copy the string to smart-malloc'd memory and free the input block.

Since we always copy malloc'd strings to smart-malloc'd memory,
and we require strings created with CopyMalloc to run their destructors,
the only kind of sweepable string is the IsShared (SharedVariant) kind;
this slightly simplifies sweeping strings.  (fewer need sweeping, at
least).
Support php://fd/%d type streams
AddNewElemC Array API

AddNewElemC is a new helper method for HphpArray that directly
implements the NewElemC opcode and avoids the need for a wrapper
when invoked from JIT compiled code.

The value is passed by value with no ref counting; semantically
the same as CVarRef or TypedValue*, but without the added indirection.
Its also worth noting that its semanticly the same as using VarNR for
the parameter type, but since we rely on simple structs being passed
in registers on x64, I wanted to avoid VarNR with its constructors, etc.
Need locking around addLineEntries

addLineEntries modifies a std::vector which another thread
could be reading. The reader has a lock, but the caller of
addLineEntries was explicitly dropping the lock right before
calling it. Since the lock is needed again, just hold it to
the end of the function.
need to pre-initialize liboniguruma

liboniguruma claims to initialize itself correctly, but
its init routing isnt thread safe (despite trying).

onig_init looks like:

  if (inited) return;
  pthread_mutex_init(...);
  pthread_mutex_lock(...);
  inited = true;
  // perform initialization
  pthread_mutex_unlock(...);

So
 - if a second thread comes along after inited is set
   to true, but before the initialization is complete, it will
   read from tables that are being initialized.
 - if a second thread comes along after the first one has called
   pthread_mutex_init, but before it has set inited, it will
   try to call pthread_mutex_init again, which is undefined
   behavior

We can avoid all the issues by calling onig_init() at startup time.
Remove dead code in HHIR
Fix a bug in Simplifier::simplifyCmp

When there was a non-const null and a const bool, the
simplifier would continuously flip the arguments and recurse
infinitely.  For some reason there was a check for const bools before
the check for null, although the optimizations we can do knowing the
rhs is null seem just as good as the optimizations knowing the rhs is
a const bool.  (In fact after a couple more recursive calls I think it
ends up there.)
Use folly/Likely.h to get LIKELY/UNLIKELY macros

Various headers from folly use the versions of these from
folly/Likely.h, so we might as well also so we can include those
headers.
Remove PropCache
Fix folly build w/ boost >= 1.48
Flesh out more IR specification

And remove some more dead code, while I'm at it.
Comment out assertion in codegen.cpp
Fix a bug in apc serialization

ArrayData::hasInternalReference had an incorrect
short-circuit when ds was false; if it found a
Serializable object, it immediately returned false,
even though later events might have forced it to
return true.

The result is that arrays with internal references
that contain Serializable objects may not deserialize
correctly (the internal references can get split, for
example).
Add FTRACE macro to util/trace.h

Trace with folly::format.
Support WholeProgram=false for hhbc compilation.

If -v WholeProgram=false and --optimize-level=0 for hhbc compilation,
use the same file-level optimization configuration as is used by hhvm.

Update repo documentation.
Remove repo contention for TestCodeRun*.

Modify the test_code_run program to specify a distinct repo for every
test, so that no repo contention occurs.

Remove the default limit of 20 parallel tests, and for hhvm increase the
default to four times the number of CPUs to improve throughput.  hphp
uses a lot of memory when building, so leave the hphp default at the
number of CPUs.
Remove TypeInstruction and some associated clean up

Gets rid of TypeInstruction, instead putting a new (possibly
Type::None) Type in the base class for the IsType instructions.  This
should go away after things are changed so SSATmps have types instead
of instructions having types (needed for multiple-dsts).  I think it'd
also be nice to remove the ExtendedInstruction vs IRInstruction
distinction (allow any instruction to have any number of srcs (and
eventually dests)); this is a small step toward that.
Add SSATmp::m_type

Adds a Type field to SSATmp, so we can store the type of a variable
separate from the type hint attached to an instruction, *and* so that
we can have instructions with more than one destination, each with
a distinct type.

For the time being, this field just copies IRInstruction::m_type and
tries to keep them both up-to-date.  Future diffs need to decouple the
use cases for the two fields.
Add support for virtual helper calls, and use it for release methods

This avoids going through a wrapper when calling release methods, just
like Tx64 currently does.