decoder: use a fmt.Fscanf-free scheme to decode.

old:
BenchmarkDecode     5000            569385 ns/op

new:
BenchmarkDecode    10000            105921 ns/op

benchmark           old ns/op     new ns/op     delta
BenchmarkDecode     569385        104167        -81.71%