fix sqlfs_proc_write() to allocate a buffer the size of the data to be written

it was allocating a buffer teh size of the entire file before!

refs #553
adjust set_value semantics to work with fixed sqlfs_proc_write

the buffer (value.data) is written into the file between the
range begin/end. the range is relative to the entire file.

refs #553
fix set_value semantics to work with middle and end blocks

refs #553
make test_write_seek_write run at multiple sizes to test block boundaries

refs #553
add test to play with writing around the block boundaries

refs #553
improved write up about how everything is implemented

refs #553
refactor sqlfs_proc_write to eliminate calloc/memcpy for almost all writes

The only time we need to calloc a new buf and then memcpy to it is when the
offset is past the end of the existing file (EOF). Then we need to fill the
space between EOF and offset with 0s, then write buf.  set_value() then
writes that whole thing.

Other cases, we just pass buf directly to read from.  This saves all of the
calloc/memcpy/free/clean_value activity for the vast majority of writes.

refs #553