Allow LSM trees to discard the btree handle from the active chunk.
In order to mmap read-only checkpoints, we need a place to store a
per-checkpoint mapping.  We don't currently have a per-checkpoint
structure in the block manager, we only have the per-file WT_BLOCK.
Add the WT_BM structure, which is a per-checkpoint structure.

While we're in the area...

Share the underlying WT_BLOCK structure between WT_BM structures, this
means checkpoints into the file will share a single file descriptor.

Give the WT_BM structure a set of method pointers, this is the change
that we'd need to plug in other block managers.

Some minor cleanups of size_t/uint32_t values.
Add a test the confirms verify truncates the file as necessary.
Generalize the check for verify's error message.
There was a salvage test that (according to the comment) was testing
that a salvage operation with an open connection/session handle would
fail; the test is wrong, an open connection/session handle is fine, it's
an open cursor that will cause verify/salvage to fail, and the test
didn't actually test for a raised exception anyway.  Remove the test
from test_salvage.py, add test_bug006.py that confirms that verify and
salvage both fail if there's an open cursor.
Add the rest of the session methods that should fail with a cursor open.
Add mmap support for read-only objects (a read-only object is an object
using a checkpoint other than the "live" system).  Basically, when a
read-only object reads pages from the backing file, it maps them into
memory rather than copying them into the buffers.

This change adds support for a new class of WT_ITEM buffer, one that has
WT_ITEM_MAPPED set.  The WT_ITEM_MAPPED flag gets set when the buffer's
object is mapped into memory by the underlying block manager read call.

Add configuration string "mmap", defaults to on, turns off mmap calls.
Don't include the backing disk page size if it was mapped into memory.
Add wording about read-only objects and mmap to the Performance Tuning page.
minor wording cleanup.
Add better wording on checksum configuration, add wording for direct I/O
configuration.
Add a section on compression to the performance tuning page.
fix a comment.
Put the WT_BLOCK structure on the queue first thing, the corresponding
close function always removes it from the queue.
Add a test for forced salvage.
MAP_NOCORE is FreeBSD specific, Linux doesn't support it.
MAP_NOSYNC is no longer needed, WiredTiger doesn't write mmap pages.
Clean up layering violation in LSM code.
It is not safe to set the DISCARD_CLOSE flag before a checkpoint.

This change alters the code to allow WT_BTREE_DISCARD_CLOSE to be passed
via a checkpoint. Also fixes a bug where we weren't unlocking a closed
btree handle properly.
Merge branch 'develop' into lsm-discard-btree
Don't clear WT_BTREE_DISCARD_CLOSE in session_get_btree