omcache: reads, replication, docs...
omcache: new features and major refactoring to get closer to first release

New functionality to get closer to being able to actually use this:

* Responses are always passed to a response callback (if defined)
* Add omcache_get operation for easily reading data

Removed some unnecessary (for v0.1) features complicating the code base and
cleaned up last year's code drop a lot:

* Distribution algorithm is always Ketama with Jenkins' One-at-a-time hash
* Merged the relevant bits of oconst.c into omcache.c
* Removed replication support for now, it needs a real spec and use case
  before it can be reintroduced
* Split memcache commands to commands.c, omcache.c only has the core now
* Added memcached_protocol_binary.h with all the required definitions to
  remove an external dependency to a header file with multiple versions
omcache: more improvements towards the first release

* all command apis now accept a timeout_msec argument which specifies how
  long to block waiting for a response to the query; -1 means indefinitely
  and 0 means no waiting at all.  if we're not waiting at all the commands
  are sent in 'quiet' mode when applicable to allow server to batch
  responses when we finally want to read them
* added CAS operation to omcache_set
* omcache_set_servers now replaces the server list instead of appending it
* renamed retry timeout to reconnect timeout and io timeout to dead timeout
  and made both configurable over the api
* added omcache_server_info api
license: switch to apache 2.0
omcache: more improvements, now passes initial tests

* cas support for get
* delta operations optionally return new value
* stats, noop, etc commands now use server_index instead of a dummy key for
  selecting the target backend
* map response error codes to omcache errors
* improvements to python bindings, support for py3k
* added omcache_pylibmc.py wrapper for compatibility testing
* various other fixes, especially for connection state handling
portability: allow building with clang

* don't use nested functions which are not supported by clang
* use -version-script=symbol.map instead of -version-script symbol.map
omcache.h: adjust required includes

poll.h is not required by any clients as the only thing we refer to is a
named struct.  stddef.h and sys/types.h, on the other hand, are needed to
define size_t and time_t.
build: fix libomcache soname and allow cflags overrides

The -soname linker flag was pointing to an empty variable instead of the
versioned soname we were supposed to use.  Also updated the way CFLAGS,
CPPFLAGS and LDFLAGS are used to make it easier to override them on
commandline.
makefile: install target, versioning

Set version to 0.1.0 and try to extract an exact version from git tags (none
of which exist at the moment.) The version numbers are going to be used by
upcoming packaging scripts.
packaging: rpm spec file and 'make rpm' target

Allow building RPM packages for recent Fedora, CentOS and Red Hat Enterprise
Linux distributions.  The package spec produces libomcache,
libomcache-devel, python-omcache and python3-omcache packages.
python bindings: bug fixes and compatibility improvements

* compatibility with python 2.6
* fixed python 3 compatibility issues
* stop logging to stderr unconditionally
* enhancements to pylibmc wrapper:
  * support more behaviors
  * support integer and boolean data types with flags
  * return True/False for set operations when applicable
logging: format strings before passing to callbacks

CFFI doesn't support varargs callbacks at the moment so we need to format
the log messages before passing it to the callback.  This may be a bit less
efficient in some cases, but it generally makes sense as it means the
application doesn't have to support the same printf formats we require
internally.

Also fixed the context being passed to the callback, it's supposed to use
pass mc->log_context, not mc.

And finally, use log priorities from sys/syslog.h instead of 0 everywhere.
omcache: bug fixes for omcache_flush_all and omcache_set_recv_buffer_max_size

Flush function now requires a server index, it didn't use either a server
index or key so it didn't work at all previously.

Fixed omcache_set_recv_buffer_max_size to set receive buffer size instead of
send buffer size.

omcache_set_response_callback was missing from symbol.map, added it there.
omcache: documentation for all public functions and some renaming

Renamed log callback function setting function and the log and response
callback typedefs for consistency.

Added and updated documentation for all public functions.
packaging: add debian packaging scripts and 'make deb' target
gitignore: add __pycache__ and *.pyc
omcache: refactoring to support multi request and response calls

Update omcache_command and omcache_io to work on arrays of requests to allow
multiple requests to be easily sent at once and responses for them to be
looked up efficiently without forcing callers to use callbacks or worry
about memory allocation.

omcache_req_t was updated to include the full memcache request header struct
and an optional server_index which is used for requests that don't use keys.

omcache_resp_t was replaced by omcache_value_t which includes the fields
that are generally useful in get requests.  Other requests can use the
structure too, or they can just be used using the omcache_command_status
interface that only returns the response status instead of any values.
multi operations: handle invalid params and no values

This makes it easier to write higher level multi-command operations where
the commands are sent in a single call without reading any responses at that
point and handling all the responses in a loop over omcache_io().
omcache_pylibmc: handle value deserialization in get_multi
compatibility wrappers: add ASL-2.0 copyright notice

Although they can now be distributed in places where Public Domain doesn't
exist it doesn't mean that these wrappers are supported or that they should
be used.