writer: remove internal buffer

User can bufferize through bufio.NewWriter instead
writer: export ErrUnderflow
writer: put go files in base directory

This directory layout seems more expected for libraries
writer: vastly decrease time to benchmark

* Precompute random values used during tests
* Do not start/stop timer during inner loop
writer: tweak error checking
writer: optimize writes

Store data into Writer and prevent heap allocation

before:
BenchmarkWrites 50000000 55.3 ns/op

after:
BenchmarkWrites 50000000 36.7 ns/op
writer: Add NewRawWriter which takes a fixed-size slice as output

Advantages over bytes.Buffer:
* ~9% faster
* Fixed size and not dynamic