Factor PackObject header parsing into PackReader

The PackReader should really do the buffer juggling. PackObject should just be
an API for reading the objects (and possibly decompressing them)