Fix off-by-one error with checking the bounds of a Pair

Summary: The bounds for CheckBounds is an exclusive bound.

Reviewed By: @jdelong

Differential Revision: D1735233

Signature: t1:1735233:1418343580:43e7a38562778f9e9f208d3836be4cace85660b3
Move shouldPGO() out of Func

Reviewed By: @jdelong

Differential Revision: D1735644

Signature: t1:1735644:1418350022:d368ae30d5512c3d96c8317658275aa085c12d53
LowPtr should not require the size to be specified.

Summary: There were several uses of LowPtr typedefs where the user had to do
"#ifdef USE_LOWPTR" and then do the same typedef for either
LowPtr<T, uint32_t> or LowPtr<T, uintptr_t>.

Instead add LowPtrImpl<T,S>, and then typedef LowPtr<T> out of it,
defining S via USE_LOWPTR.

Reviewed By: @elgenie

Differential Revision: D1705343

Signature: t1:1705343:1417002921:5951d14bdf2418494803c4135a7349b90f7f0391
Use MM for MCrypt allocations

Reviewed By: @jano

Differential Revision: D1729456
Use MM for Key allocations

Reviewed By: @jano

Differential Revision: D1729467
Use MM for CSRequest allocations

Reviewed By: @jano

Differential Revision: D1729480