<rdar://problem/19104060>
LLVM's PointerIntPair always picks the highest bits of the available low
order free bits but NumLowBitsAvailable is the number of *lowest* bits
available from the LSB. This could cause problems with overwriting when
putting a FlaggedPointer inside a PointerIntPair. Just don't allow it.
Add a static assert to make sure there are enough bits to support the
number of nested FlaggedPointers.
Add a helper constexpr min function which isn't available until C++14.
Swift SVN r23597