Enforce coersion of nullable typehints to HNI functions

Summary: Currently, when an HNI param type is nullable,
we actually skip any kind of type coersion on the basis
that the data passed to the C++ function is a Variant.

This diff applies the underlying coersion anyway,
so long as the passed value is not null.

Reviewed By: @swtaarrs

Differential Revision: D1579204
ARM loose ends in codegen

Summary: Remove redundant code from code-gen-arm now that it
uses virtual registers all the time. There probably isn't
much else to do before trying to merge this into x64::CodeGenerator,
and the biggest missing pass is arm-aware immediate folding.

Reviewed By: @alexmalyshev

Differential Revision: D1586771
Remove the SharedStores wrapper, don't dynamically allocate APC

Summary: There's no reason to put it in the heap, and we don't need the array
of APCs anymore after D1568138.  Let's still delay construction until the same
point, even though it's in a bit of an odd place right now....  (It shouldn't
be before main in any case: it will soon want to read runtime options to know
the initial table size.)

Reviewed By: @mclarkelauer

Differential Revision: D1585742
Move shared-store-base* to apc-file-storage* and rename SharedStoreFileStorage

Summary: The name is historical, and after removing SharedStores it's the only
thing in this header.

Reviewed By: @edwinsmith

Differential Revision: D1585758
Move StringData::Make(const APCString*) functions to string-data.cpp

Summary: These were initially in apc-string so they could be inlined into their
only caller.  But now they aren't called from this translation unit anymore
(and also with useUncounted on we do this a lot less often).  Moving them back
to string-data shouldn't have any effect.  Also "MakeSharedSlowPath" was still
named after the old "SharedVariant", and had nothing to do with the new
"MakeShared".

Reviewed By: @edwinsmith

Differential Revision: D1587043