Epsilon must be tied to the stream

If epsilon is "too big", the numbers are bad because they're inaccurate.
If epsilon is "too small", the numbers are bad because the block size
becomes negative (because the computation asks for math.Log(epsilon*n),
which is negative is epsilon is "too accurate" for the stream size.)

We now check that epsilon is ok before returning out stream.