Decrease size of BPos
Summary: Use the same bit-packing types used in hh_server, oxidized, and oxidized_by_ref (FilePosSmall and PosSpanTiny) to represent most positions in much less space. Decreases size_of::<PosImpl>() from 56 bytes to 16. 95% of positions fit in those 16 bytes (the Tiny variant). For positions that don't fit the Tiny variant, use the Small variant, which allocates 16 more bytes for two `FilePosSmall`s. For even larger positions, allocate 48 bytes for two `FilePosLarge`s.
Reviewed By: edwinsmith
Differential Revision:
D34162388
fbshipit-source-id:
522072516aa3f7d71fb93580dc452740d7cae73e