Add a new per-session flag, WT_SESSION_CAN_WAIT, and only use sessions
with that flag, and which are not holding the schema or lsm-tree locks,
are used by the to make block-manager fsync calls based on os_cache_dirty
configurations.

Sessions that take the flag: application checkpoint, checkpoint server,
eviction workers (and eviction primary if there are no eviction workers)
and handle sweep server.

Reference #1152.
Move the primary eviction thread creation next to its session create,
just for simplicity.
Randomly configure between 0 and 5 eviction worker threads.
A couple of simple cleanups:

Allocate session handles directly into the structure memory we'll check
to decide if they need to be closed, that way if the called function
messes up, we still clean up.

Use the allocated session handle instead of the default session handle
when creating on the internal servers, that way we'll get better error
messages if something goes wrong.
WiredTiger config doesn't support setting the eviction max-threads
to 0, don't do that.

Check the snprintf into the config buffers return, in case we overflow
them.
Don't start the primary thread until the worker threads are created,
else the primary might try and start additional threads on its own.
Merge branch 'develop' into session-can-wait
Merge pull request #1161 from wiredtiger/session-can-wait

Add a new per-session flag, WT_SESSION_CAN_WAIT