I'm finding the JournalStream interface a little hinky. In particular, the only reason these aren't static functions is because of the object's "format" param, and I'm wondering if we shouldn't just make that a value you pass in. What advantage do you see us getting out if it being an object, and from pulling the encode/decode functionality out of the regular Journal rather than just into separate functions?