Re-organize CMakeLists

The goal here is to make our code and build system more modular, with
the ultimate aim of being able to -theoretically- ship some components
as being standalone.

The first step is trying to untangle the build process - where multiple
modules can be built independently into shared or static archives and
then linked ultimately into their resultant objects.

The second step is to eliminate the NMakefile

Currently supported:

- Plugin builds (libev, libuv, libevent)
- Tools (cbc, pillowfight)
- Tests (unit-test, smoke-test, check-all)
- SOVERSION
- DLL Version information
- config.h generation
- Fat binary builds (OS X)
- Maintainer mode

TODO:

- Make things completely out of tree. Currently the configuration.h
  header is still being generated inside the tree
- Better facilities for downloading the mock server
- Create source tarballs
- Create windows zipfiles and/or installers

Change-Id: I8402f8e8e0821af2e87ca425c985017de630b0e7
Reviewed-on: http://review.couchbase.org/32466
Reviewed-by: Brett Lawson <brett19@gmail.com>
Tested-by: Mark Nunberg <mnunberg@haskalah.org>