Refactor Endian
Summary:
[Folly] Refactor `Endian`.
Define `swap` for all types, instead of only declaring it for all types, but have its implementation call a function that only has a given set of non-template overloads for a given set of supported types.
The effective change is that now `Endian::swap<std::string>` will fail to compile, rather than compile but fail to link.
And support floating-point types.
Reviewed By: nbronson
Differential Revision:
D4615706
fbshipit-source-id:
5034e1e4466b8118a258d917ce8f4094460ca01a