Create a special isolation level for eviction.

This avoids futzing with the transaction context, and also means that eviction of large pages is (slightly) more likely to succeed, because the oldest ID can move while reconciliation is splitting the page.
Only try eviction if there is a good chance it will succeed.
Don't queue pages for eviction unless there is a good chance it will succeed.
Use fewer than 256 page locks to see whether L1 cache performance improves.
Give in-memory splits a chance to work.  Stall if we're waiting on the oldest ID to move forwards.  Move most of the forced eviction logic to btree.i.
Tweak forced eviction a little more: don't retry, but give in-memory splits more chance of happening.
Add statistics tracking forced eviction.
Don't block the oldest reader in the system forever.  Try harder to evict when we aren't keeping the oldest ID pinned.

refs #754
Back out a change to __wt_txn_am_oldest: that isn't changing.
Avoid division by zero if the cache size has not yet been set in a shared cache.
Back out another part of the original change: we need to get a snapshot when positioning a cursor, even if it is going to auto-commit.
Merge pull request #755 from wiredtiger/eviction-unblock

Avoid eviction deadlocks
imported patch spelling
Fix compiler warning:
../src/log/log.c: In function '__wt_log_scan':
../src/log/log.c:696: warning: 'start_lsn.unused' may be used uninitialized in this function

GCC is getting paranoid.
Only consider eviction "busy" if there are updates in progress.

refs #754
Retry forced eviction even if the oldest ID hasn't moved on.  An in-memory split may succeed.

This reverts part of b4c8021f0affee34f1d60e54e87a35fc7fe0cafa.
enhande/fix a few comments, conn->session_array no longer exists
Merge branch 'develop' into compress