Maintain a mapping from funcId -> Func*

This diff adds AtomicVector (see comment in atomic_vector.h
for what it is) and uses it to maintain a mapping from funcIds to the
corresponding Func*. This is then used in sktrace instead of
curUnit(), since curUnit() isn't guaranteed to be the Unit the SrcKey
in question came from.
Revert "IterInit, IterInitK, IterNet and IterNextK specializations and guards"
Revert "Remove the SharedVariant pointer from StringData."
Revert "Delete GlobalCache"
Revert "clean up SharedMap"
Increase the starting size for the funcId AtomicVector

Sounds like there might be a bug in the growing logic. This
is just a stopgap until I get a real fix.
Add NEWS files

initial files for release notes.
EmitterVisitor::emitPostponedMeths refactorization

EmitterVisitor::emitPostponedMeths was terribly long and disorganized.
Let's split it into more methods that can be later reused for emitting
generator body in FuncEmitter.
Revert "Treadmill for shared variants"
Move _count to offset 12, and rename to m_count.

This allows us to swap TypedValue.m_type and m_aux, which puts
m_type at offset 8 and simplifies the necessary code for passing
TypedValue by value.  It also makes the m_type and m_data fields
of TypedValue contiguous.
Fix build
fix build error on OSX

- fix typo in embedded_data.cpp
Don't serialize cppext instances unless they opt-in, and pass the class name for the debugger

Most CPP extension classes don’t think about serialization, and some require more initialization than the default contractor provides. The result is that on deserialization we end up with a partially initialized object, and undefined behavior after that.

Modified the serializer to emit __PHP_Unserializable_Class instead, and just the class name for the debugger case. Modified the deserializer to create a __PHP_Unserializable_Class, too, if we are given a string with a CPP extension instance in it, so we're safe on both sides. I do not raise a warning; the results are pretty clear, I think, and it's also unlikely that most such warnings could (or should) be corrected. Finally, I also removed the odd behavior of emitting "dummy" classes for Closure and Continuation. I found no use of these in any source tree. Closure had no implementation at all, and Continuation had an implementation that simply raised a fatal on any method call. Thus we can safely assume that even if someone was serializing one of these types, they were receiving an object that was useless to them, or would fatal. So I believe this transformation is safe.
Tweaks to AllocObjFast relating to allocating extension classes

When there's an instance ctor, it's not necessary to do the
memcpy for properties or other ObjectData-initialization duties (the
instance ctor does this).  Also, use extra data for the compile-time
constant Class*.
Use ExtraData for LdCtx's compile-time Func parameter
Change hasThis to check ActRec::m_this & 1 again

It was checking & 3, and I couldn't figure out why.  It looks
like it was introduced probably accidentally by D498715.
implement RecursiveArrayIterator

I went through all the tests that mentioned this and looked at them. All of them don't pass because of other missing SPL problems not related to this class (and this class is simple so I wouldn't assume them to blame to it).

Closes #766
delegate some syscalls to the stream wrappers

Needed for phars. People are doing

  file_exists('phar://a.phar/b.php');

I didn't do all syscalls like `chmod` or `symlink`. Think I should bite the bullet, or do it piecemeal when needed?
make include path work with stream wrappers

For phars, I need

  include "phar://some/file.phar/sub/file.php"

to work. I'm trying not to hurt the common path of using files.
remove default boolean params from File::TranslatePath

Most callsites use the defaults, and I can't figure out which callsites should and should not use it. Lets just have different functions for each use-case.