Minor cleanups: sub order, vertical alignment, #=

* Move decode subs to the top so that all the read-* subs can be together.
* Vertically align some arguments that were bugging me as is.
* Change a # comment to #=.
Add type and 'is pure' annotations to Reader subs
Begin building low-level binary PB writer code

Approximately matches what the reader can do, except for length-delimited
values, which are still WIP.
Tests for low-level binary writer

Tests writing varints, fixed32, fixed64, and pairs thereof.