Add statistics to track memory from splits that cannot be freed immediately.

refs #1079
Free memory more aggressively after splits.  Keep the list of allocated objects in order, stop scanning when the first object is found that cannot be freed.  Check if there is no other thread active in the tree, and free memory immediately in that case.

refs #1079
If a thread does eviction during a search, it might be holding a reference, so we can't free immediately.

refs #1079
Merge branch 'develop' into split-memory-management
Merge branch 'develop' into split-memory-management
Add all possible statistics operations (DECRV and ATOMIC flavors)
If all objects stashed by a split are freed, reset the count to zero.
Use a split generation number to determine when memory replaced by a split can be freed.
Take WT_ALLOC_OVERHEAD into account when calculating memory moved between pages by splits.  Always to an increment and a decrement to the page to balance out the overhead added there.
Cleanup based on Alex's feedback.

refs #1082
Merge branch 'develop' into split-memory-management

Conflicts:
	src/include/stat.h
fix a comment typo.
whitespace
Fix a comment typo.
Fix a comment typo.
Implement Keith's review feedback.
Merge pull request #1082 from wiredtiger/split-memory-management

Improve split memory management: stay within the cache size when constantly splitting.