Various improvements

With these changes merged, we can do fun stuff [like this](https://github.com/staticfloat/BinaryAnalysis.jl/blob/master/test/runtests.jl) (Where all the actual work happens [here](https://github.com/staticfloat/BinaryAnalysis.jl/blob/master/src/BinaryAnalysis.jl)).

I assume you'd eventually like to make ObjFileBase flexible enough that I can abstract out the mach-specific stuff and do this to ELF files as well?
So you're saying I can just use `unpack(h, Uint32)` instead of `read(h.io, Uint32)`?