Refactor SweepNode and family to make room for header kind

Summary: Decoupled NativeData's use of SweepNode from MemoryManager
since they are independent data structures. Renamed SweepNode
to BigNode reflecting its only use. Defined Big/Small/FreeNode
together so its easy to see their layouts together.

down in memory-manager.cpp, define union MallocNode that combines
BigNode and SmallNode in a cleaner way, and doesn't expose the
unioning outside the memory manager module.

sizeof SmallNode grew to 16 bytes, this guarantees all smart_malloc
blocks are 16-byte aligned, but might cause some allocations to
grow into the next size class.

Reviewed By: @jdelong

Differential Revision: D1649339
Move ArrayData::m_kind to offset 11

Summary: Rearranging the header so all object types have a 1-byte field
at offset 11, adjacent to m_count. in packed-array.cpp and
mixed-array.cpp, I refactored carefully to keep header initialization
all together so it was easier to inspect the code.

Reviewed By: @jdelong

Differential Revision: D1646259