huge key/value support.

Here's a first set of changes for #808.

It works and passes the usual tests, but there's still a fair amount of cleanup left to do.  For example, I changed __wt_write() to take a size_t instead of a uint32_t, but I haven't yet made the corresponding change to __wt_read(), and there are a bunch of places where I cast values without working through if it's the "right" place to do the  conversion.
 
I wanted everyone to get a sense of what's going on here so we can stop digging if this is a bad idea.  There's a lot of fiddly changes in here, we're going to spend some amount of time over the next 6 months futzing with various interfaces so we're consistently using size_t when talking  about buffers/objects in memory, and using uint32_t when writing to/from pages.   As another example, we should get rid of almost all of the uses of uint32_t in the block manager code: the primary use is as the length of an address, which is really a size_t, since it's an object in memory.