Move the eager vm save to enterTCHelper

Summary: We always save rVmFp and rVmSp as part of the service
request stub; but we could just as easily do it in
enterTCHelper, and reduce the size of the stubs.

When I went to reduce the size of the stubs, I saw that we
were already somewhat undercounting - although we never come
close to the worst case in practice. So maxStubSpace is
actually unchanged by this diff (although the actual space
for non-ephemeral stubs will be reduced).

Reviewed By: @jdelong

Differential Revision: D1632905
Don't use KindOfAny in predictOutputs() and friends

Reviewed By: @jdelong

Differential Revision: D1615152
Eliminate KindOfAny and KindOfNone

Summary: We replace them with:
- separate enum types, KindOf{None,Any}Type, for use in function argument
  discrimination.
- MaybeDataType, for members that stand for either (DataType|KindOfAny)
  or (DataType|KindOfNone); this is context-dependent.
- a pile of booleans for members that need (DataType|Any|None).
- gross and ugly #define's in bootstrap/idl.h, which should go away
  eventually anyway.

Reviewed By: @jdelong

Differential Revision: D1620231
s/KindOfUnknown/KindOfInvalid

Reviewed By: @edwinsmith

Differential Revision: D1624837
Remove some uses of KindOfInvalid

Summary: This takes care of three easily-removed sorts of uses of KindOfInvalid.

The first is dead code; this includes:
  - Type::getDataType() and Type::getHhvmDataType() in the compiler
  - getArgType() in ext/extension.h

The second is easy, file-local conversions to MaybeDataType; these
include:
  - EmitterVisitor::analyzeSwitch()
  - get_option_value_type() in ext_mysqli
  - convert_for_pow() in ext_math

The last is cases where we can't convert to MaybeDataType because the
DataType is part of a TypedValue.  For these, we introduce
kInvalidDataType, which is identical to KindOfInvalid but is not part of
the DataType enum, so that we can expunge KindOfInvalid from case
statements when the remaining uses are deleted.  These include:
  - logic around `mainReturn' in the compiler
  - MixedArray
  - HashCollection
  - NameValueTable

Finally, one miscellaneous s/KindOfInvalid/kInvalidDataType was made:
  - The DataType serialized in `constant->valueText' in
    ClassInfoUnique(); not sure where this comes from.

Reviewed By: @jdelong

Differential Revision: D1624839
Kill KindOfInvalid

Summary: Remove all the remaining uses of KindOfInvalid.  Primarily, this entails
converting:
  - TypeAnnotation::dataType()
  - Func::ParamInfo::builtinType
  - Func::SharedData::m_returnType
  - FuncEmitter::returnType
  - TypeConstraint::underlyingDataType()
and related functions and members to use MaybeDataType.

Reviewed By: @jdelong

Differential Revision: D1624851