use fwd.Reader.Next instead of Peek/Skip

json too

add Error type; remove all uses of errors.New; also, panic on registration of dupliate extensions

move errors to their own file

make sure to distinguish between TypeError and InvalidPrefixError; one is resumable and one is not

(*Reader.).Skip() gets fast-path

for JSON, 'bin' goes to base64 quoted string for map key