Add DEBUG JEMALLOC INFO

Uses jemalloc function malloc_stats_print() to return
stats about what jemalloc has allocated internally.
Remove ziplist compiler warnings

Only happen when compiled with the test define.
Allow all code tests to run using Redis args

Previously, many files had individual main() functions for testing,
but each required being compiled with their own testing flags.
That gets difficult when you have 8 different flags you need
to set just to run all tests (plus, some test files required
other files to be compiled aaginst them, and it seems some didn't
build at all without including the rest of Redis).

Now all individual test main() funcions are renamed to a test
function for the file itself and one global REDIS_TEST define enables
testing across the entire codebase.

Tests can now be run with:
  - `./redis-server test <test>`

  e.g. ./redis-server test ziplist

If REDIS_TEST is not defined, then no tests get included and no
tests are included in the final redis-server binary.
Add simple ll2string() tests
Allow forcing non-jemalloc build
Fix how zipEntry returns values

zipEntry was returning a struct, but that caused some
problems with tests under 32 bit builds.

The tests run better if we operate on structs allocated in the
caller without worrying about copying on return.
Fix ziplistDeleteRange index parameter

It's valid to delete from negative offsets, so we *don't*
want unsigned arguments here.
Fix ziplist test for pop()

The previous test wasn't returning the new ziplist, so the test
was invalid.  Now the test works properly.

These problems were simultaenously discovered in #2154 and that
PR also had an additional fix we included here.
Cleanup ziplist valgrind warnings

Valgrind can't detect 'memset' initializes things, so let's
statically initialize them to remove some unnecessary warnings.
Fix three simple clang analyzer warnings
Add quicklist implementation

This replaces individual ziplist vs. linkedlist representations
for Redis list operations.

Big thanks for all the reviews and feedback from everybody in
https://github.com/antirez/redis/pull/2143
Remove config option list-max-ziplist-value

As with all config option removals, this will stop Redis
from loading any config file with that old directive.

Maybe we should allow Redis to ignore invalid directives instead
of halting and refusing to load a config file with unknown settings?
Add ziplistMerge()

This started out as #2158 by sunheehnus, but I kept rewriting it
until I could understand things more easily and get a few more
correctness guarantees out of the readability flow.

The original commit created and returned a new ziplist with the contents of
both input ziplists, but I prefer to grow one of the input ziplists
and destroy the other one.

So, instead of malloc+copy as in #2158, the merge now reallocs one of
the existing ziplists and copies the other ziplist into the new space.

Also added merge test cases to ziplistTest()
Free ziplist test lists during tests

Freeing our test lists helps keep valgrind output clean