Use aligned version of hash function when safe

Summary: I am assuming that std::string::c_str() and HPHP::String::data() always give aligned addresses.

I don't see a failure. But sandcastle has been postponing some tests for many hours now.

Reviewed By: @markw65

Differential Revision: D1725993

Signature: t1:1725993:1418080027:b7628914ad44582976748d138c53db43ddc48028
Use a custom implementation of strtoll for unserialize

Summary: We can do better than the standard libc strtoll for unserialize, both
because we can avoid the plt, and because unserialize doesn't need all the edge
conditions (overflow doesn't need to be defined in any particular way, there's
no need AFAIK to handle leading + or whitespace).

Reviewed By: @ottoni

Differential Revision: D1722763

Signature: t1:1722763:1417817958:a1b96780879ce4400b30fe39b21523b171ba5bd9