Eviction under load

While looking at #1068, one thing I noticed is that the eviction server thread can get "stuck" in eviction (particularly splits), and that other threads stall.  This branch attempts to address that in two ways:

1. if other threads are waiting to do eviction, the server thread just wakes them up and keeps scanning for more pages to add to the queue; and
2. an idea of Keith's: application threads only get involved with eviction when their session is quiet if they have missed in the cache recently while it was full.

For me, this branch helps quite a lot with the workload from #1068 (separately or together with #1082).
I started thinking the condition variable having waiters was equivalent to the count I'm suggesting, but on second thought I don't think it is -- there could be N threads evicting pages, but since they're actually evicting, they're not waiting on the eviction queue, which could lead to the server mistakenly evicting pages itself.

Given how expensive evicting pages is (especially if there's splitting and partial-page eviction involved), I'm starting to think the eviction server itself should never evict pages.