fix glitch with flush_all <future>

reported by jhpark. items at the bottom of the LRU would be popped for sets if
flush_all was set for the "future" but said future hadn't arrived yet.
item_get handled this correctly so the flush would not happen, but items at
the bottom of the LRU would be reclaimed early.

Added tests for this as well.
Better detection of sasl_callback_ft
- Fix inline issue with older compilers (gcc 4.2.2)

ed note: this needs to be redone in memcached.h as a static inline, or changed
to a define.
Avoid race condition in test by re-trying

(ed note: yes it doesn't check for a NULL and die after 20 times. this should
mitigate until we can do better with writing the pidfile)
pre-split slab pages into slab freelists

slab freelists used to be malloc'ed arrays. then they were changed into a
freelist. now we pre-split newly assigned/moved pages into a slabs freelist
instead of lazily pulling pointers as needed.

The loop is pretty darn direct and I can't measure a performance impact of
this relatively rare event.

In doing this, slab reassign can move memory without having to wait for a
class to chew through its recently assigned page first.
remove end_page_ptr business from slabs

slab memory assignment used to lazily split a new page into chunks as memory
was requested. now it doesn't, so drop all the related code.

Cuts the memory assignment hotpath a tiny bit, so that's exciting.
split slab rebalance and automove threads

slab rebalancer now chillaxes on a signal and waits a lot less time when
hitting a busy item. automove is its own thread now, and signals rebal when
necessary.

when entering the command "slabs reassign 1 2" it should start moving a
page instantly.
slab rebalancing from random class

specifying -1 as the src class for a slabs reassign will pick the first
available, rolling through the list on each request (so as to not bias against
the smaller classes).

So if you're in a hurry and have to move memory into class 5, you may now mash
it without thinking.
automove levels are an int instead of bool now

also fix a bug causing slab rebalance thread to spin instead of waiting on the
condition... duhr.
remove rebalancer's race condition

slabs_reassign() calls now attempt to lock, return busy if thread is already
moving something.
Remove USE_SYSTEM_MALLOC define

bitrotted. only existed to prove a point. can add it back in better later, or
use a storage engine if we ever get on 1.6.
update reassign/automove documentation
Fix doc/protocol.txt typo

(I removed the "honoured" fix as this is american english -ed)
Error and exit if we don't have hugetlb support

I imagine host people on linux run this and then get both thumbs stuck up
their noses when weird bugs happen. Lets start by not lying to them.
If we're preallocating memory, prealloc slab pages

I'll probably get in trouble for removing DONT_PREALLOC_SLABS

... however tons of people like using the -L option, which does nothing under
linux. It should soon do *something* under linux, and when it does they'll
report the same errors of not being able to store things into certain slab
classes.

So just give them a useful error and bail instead.
Define touch command probe for DTrace support
totally destroy test caches

someone pointed out that cache_destroy wasn't freeing the cache_t pointer.

memcached itself never destroys a cache it creates, so this is fine, but it's
fixed for completeness...
add a binary touch test that actaully fails
Fixed issue with invalid binary protocol touch command expiration time
(http://code.google.com/p/memcached/issues/detail?id=275)
Use Markdown for README.