Add "test" target to .PHONY rule.
Remove read_one() and merge it with read().
Remove unused #define
Change the alignment from 16 to sizeof(void *).

On x86-64, this should relax memory pressure because the object is now aligned
on 8 byte boundary instead of 16. On x86, the object would be as small as 4 bytes,
although I didn't test that.
Code cleanup