Switch the update serialization function to an atomic instruction instead
of acquiring/releasing a spinlock.
Serialize threads of control doing the "obsolete WT_UPDATE" check.
The code inside __col_append_serial_func() is the same as the code in
__insert_serial_func(), now that the functions are inlined, might as
well only have a single copy.
Merge pull request #723 from wiredtiger/atomic-update

Switch the update serialization function to an atomic instruction instead of acquiring/releasing a spinlock.
If ins_stack[i] == NULL, we've already returned WT_RESTART.
fix a comment.
Use gcc attribute to force spinlock padding to 64B.
Move most of mutex.h into hardware.h.
Do WT_CACHE_LINE_ALIGNMENT for gcc spinlocks as well.
Implement Alex's suggested "are we evicting" check: don't look for
obsolete WT_UPDATE structures unless we have eviction candidates.
Don't grab the checkpoint lock every time we update LSM metadata.  We often have an exclusive lock on the LSM tree at this point (blocking ordinary cursors), so waiting on the checkpoint lock here can show up as application latency spikes.

The reasoning for waiting here was if a checkpoint is in progress, the LSM metadata could become out-of-sync with the tree.  That is, the LSM metadata could reference a chunk that is not part of the checkpoint.  But that is already prevented by the schema lock: chunks cannot be added or removed from the tree without first getting the schema lock, and checkpoints hold the schema lock throughout.
Don't do "bad" merges just because we have multiple threads: only consider small merges after getting aggressive.
Remove a warning about const-ness from hash_fnv.c, minor cleanup, no real change.
Fix compiler warning:

../../../bench/wtperf/wtperf.c: In function ‘execute_populate’:
../../../bench/wtperf/wtperf.c:721: warning: implicit conversion
shortens 64-bit value into a 32-bit value
Add explicit active state to eviction server.

Used to limit when we clean up obsolete update lists.
Merge pull request #724 from wiredtiger/lsm-optimizations

Some LSM optimizations