[]byte based queue implementation
Fixed bug where FinishRead was incrementing tail
Fixed, perf copying slice wrong way around
Q now has Read([]byte) Write([]byte) interface

Previously we were retrieving a byte slice from the q, writing to it and
then confirming we had finished writing. We would read from the queue in
the same way. On my chromebook this implementation managed 100MM
write/reads in ~18 seconds.

The new interface allows the client code to cache (or not) it's own
buffer []byte and pass that into the queue for writing. On my chromebook
this implementation manages 100MM write/reads in ~13 seconds.
Reducing size of ringbuffer to 1024 * 1024

This appears to have produced a small speedup.
Now returning bytes read/written

Previously we were returning true or false indicating whether the read
or write was successful. Now we return the number of bytes written,
where 0 means failure.

Additionally the Read(...) method now reads as many bytes as possible
into the []byte argument. This allows us to batch up reads.
Tidied up oneoneq.Q into cachelines

Each of the mutable parts of the Q struct are now atomicint.CacheLine
structs. This prevents false sharing. A final read-only cache line sized
block of fields exists at the end of the Q struct.

atomicint.Value renamed to atomicint.CacheLine and the value field made
public as Value.
Adding pointer specific q
First pointer_q hack - not working