For now it simply includes reading in the reflog as a list of
entries. This does mean that the drop/append functions don't need to be
wrapped, as we can use erlang's list handling.
It however also means that we cannot write this back out, as there is
currently no way to create an empty reflog that we can fill with our own
list.
Use erlang's allocator and simplify the code by writing into the
buffer we're going to give back anyway.
Also introduce a function to NUL-terminate iolist buffers, which can
avoid memory copying.