[MB-11548] Memcached does not handle going back in time.

1) Update testapp so that we can expose the bug.

The idea here is to move us to using a platform method that abstracts gettimeofday.
With that in place we can apply time shifts in a programmatic fashion using the
memcached protocol extension framework.

Testapp uses testapp_extension.so to send time offset values into memcached and
cause a jump in time.

2) Add mc_time module and move memcached.c methods + add bug fix.
 - This module provides the legacy API but
 a) current_time is now monotonic and immune to system clock changes
 b) allow correct absolute system time calculations without the I/O path needing
    a system call. This works alongside real system clock changes.
 c) validate that existing expiry tests and new expiry tests are now operational.

3) Remove any gettimeofday reference from memcached so that we use the new platform method.

4) As part of final testing, some system tests were performed where I manually
changed the real system clock using "sudo date" commands.

Change-Id: I2048c536f344050191feeed16635196f44b70b37
Reviewed-on: http://review.couchbase.org/39813
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>
Tested-by: Trond Norbye <trond.norbye@gmail.com>