binary/reader: Rework logic to not suck
Previously we've relied on cruft "loaded" logic, we're now going to rely
on explicit "read" logic in a payload wrapper, which allows us to add
methods to a Payload that aren't appropriate in the Writer APIs.
Additionally this will allow us to add iteration methods in future,
which will "just work" without requiring obtuse branching logic to
Signed-off-by: Ikey Doherty <email@example.com>