Use specialized types for the base object when doing member access.

Summary: Prior to this patch we only specialized the base type when doing member
access if the Type that we had was for a small subset of collection objects
(e.g. pairs, vectors, maps, etc.) Now we always constrain the base if we have
a Type with specalized class. This is a 20% win on our small subset of the
Octane benchmarks. Splay (54%!!) and Richards (29%) benefitted the most. Perflab
results aren't quite as positive with what appear to be slight i-cache
improvements and slight improvements in CPU instructions.

Reviewed By: @jdelong

Differential Revision: D1560957
Add surprise check to str_split

Summary: Doing str_split on a large string can create a very large array.
Putting the check in a loop probably isn't ideal, but checking after is too
late...

Reviewed By: @edwinsmith

Differential Revision: D1576257