Expose Data.Fixed.Fixed's constructor

Discussed on libraries@, and summarised in
http://www.haskell.org/pipermail/libraries/2012-December/019076.html
BufferedIO: Add readBuffered, writeBuffered, and nonblocking variants

These will allow hGetBuf* and hPutBuf* to read and write to/from the device
directly without casting the device to FD.

This code does a lot of "state" updating, e.g.:

    (r, buf'') <- copyToBuffer buf' ptr count
    buf''' <- flushWriteBuffer dev buf''
    return (r, buf''')

This is bug-prone.  It'd be nice if GHC had a flag to warn if you
use x when x' is in scope.
Move dEFAULT_FD_BUFFER_SIZE to GHC.IO.BufferedIO, and rename to defaultBufferSize
Implement hGetBuf* and hPutBuf* using new BufferedIO methods

Fixes #4144 (see 59d4a66 as well)

This commit slightly changes the behavior of hGetBufSome, hGetBufNonBlocking,
and hPutBufNonBlocking.  They are now less greedy about reading or writing all
requested bytes, stopping when the buffer is exhausted rather than making a
system call to try to squeeze out more bytes.  See #5843.

Also, update doc of hGetBufNonBlocking to say that on Windows, it only
works incorrectly "for files".  This is because the network package
should soon have it's own IODevice for sockets, with a correct
implementation of readNonBlocking.
Update instance BufferedIO FD to use RawIO-based readBuffered/writeBuffered impls
For defaultBufferSize, use 8192 (a power of 2) instead of 8096

This constant was introduced by commit 9d48543 "Always use 8k buffers instead of BUFSIZ"
I think 8192 (2^13) was intended here.