Failing unit test and fix for buffer overrun access violation in GCDAsyncSocketPreBuffer.

It's easy to see the bug by putting the read pointer slightly behind the write pointer both near the end of the buffer. I would imagine this is a remnant of the pre buffer being a ring buffer.

Thanks, @ransomr, for helping track this down.