Cache session/[{cursor, config}] for reuse and spawn threads when needed.

This set of changes tries to balance workload against the cost of reusable resources within WiredTiger.  Using too many threads or having too many open sessions or cursors can cause slowdowns in WiredTiger, using too few can bottleneck the Erlang side of the equation.  In this set of changes I try to limit resource without impacting performance and reuse resources rather than re-creating them when possible.

Also, the notion of a "context" (wterl_ctx) should make it easier to integrate transactions which I'd like to use when adding 2i support to the riak_kv_wterl_backend driver.