Don't check for a file with no data pages until we've truncated back to
the last checkpoint, the truncation might discard all of the data pages.
This closes #820.
uint32_t/size_t review: __wt_raw_to_hex_mem() should take a size_t
length, not a uint32_t.

While I was in the area, the macro FILL_HEX had some minor fluff: it
declared variables in the function's namespace, some macro arguments
were used without beingt parenthesized, the test for destination buffer
length could potentially wrap around if the destination buffer length
was too short.  None of these are bugs in the existing code, but there's
no reason to leave it that way either.  I rewrote FILL_HEX as an inline
function instead, and fixed some comments, there's no "worst case" for
this function, it converts N bytes to a nul-terminated (N * 2 + 1)
string.
More uint32_t/size_t review, use WT_STORE_SIZE to cast a size_t to
a btree-object uint32_t size.
fix a comment.
More changes to move from using uint32_t to describe in-memory lengths,
use size_t instead.
Change the length of an in-memory cell from a uint32_t to a size_t.
Missed on, use WT_PTRDIFF, not WT_PTRDIFF32 to store into a size_t.