Basic changes to impose namespaces on top of the underlying KVS store:
create a new "uri" based structure for each underlying name, prefix all
records with a packed, unique 8B ID (and add a "WiredTiger" name space,
with an ID of 0).
Copy the entry filled with NULLs, otherwise the search for a matching
method name won't terminate.
Make sure we add the slot of NULL's, otherwise the search for the method
name will drop core.
Now that the memrata driver is storing the basic configuration (including
key and value formats), we don't need to modify the configuration array
being passed to the underlying session.open_cursor method.
More namespace changes: we can now pass kvs_XXX options (including
kvs_devices) to every session method that takes a URI.

Move the URI structure configuration into the session.open_cursor support,
all session.create does now is store the master record for the URI on
the device.  Move format configuration from the cursor into the underlying
URI structure.

Rework the record number allocation to avoid races (we lock it before
we allocate a value, and we check that any explicit record creation
doesn't allocate a record past it).

Sort the list of devices so ordering doesn't affect naming.
Fix a memory leak, error handling cleanups.
Memory leak: free the underlying WT_DATA_SOURCE structure on termination.
Every WiredTiger API that takes a URI must now configure kvs_devices.

Specify kvs_open_o_truncate when opening the device, we're starting
fresh on every run.
Add the kvs_dump() function back in (it only handles row-store, though).

Add a new kvs_open configuration string, kvs_open_o_truncate, clears
the store on open.
Fix a core dump: handle adding configuration options to methods that
have no existing checks.
whitespace
__truncate_table has to call through __wt_schema_truncate, it can't
assume all of its underlying objects are file types.

Complain if we see a URI that we don't recognize.
I went too far on the last change -- we always have to create a checks
entry, we just have to handle the case where there's no checks entry for
the original method.
Implement session.truncate.
Implement session.rename.
We have to rename the data-source object in the metadata file as well
as calling the underlying extension.

Remove unused WT_ITEM from __rename_table.

Complain if we get a URI we don't understand.
Don't trust the extension code to give us something reasonable.
We have to remove the data-source entry from the metadata file during
the drop.
Implement session.drop.
Change __wt_schema_get_source() to not call __wt_bad_object_type itself,
that's making assumptions about how it's called I'm not willing to make.
Consistently call __wt_bad_object_type() when we have an invalid URI
type for a schema-level operation.
Use a single ENOTSUP error message.