TAP connections no longer drain connection pool

TAP event connections to the couchbase server cannot be reused once they
are exhausted, and are therefore closed when complete. Because these
connections are pulled from the connection pool but are never returned,
an application making periodic TAP streams will eventually exhaust the
connection pool, indefinately blocking the app (by 720h by default).

Capacity of the connection pool is managed by a buffered channel which
acts as a semaphore. Sending on the channel acquires the samephore,
receiving releases it.

To allow TAP connections that do not count against the connection pool
capacity, we simply release the semaphore when creating the stream.
Add ability delete design docs
Suppress empty reduce function.

Couchbase server (2.1.0, at least) errors out if reduce
function is empty in a PUT request. So mark optional fields
to be suppressed if empty.
added utility to load files into couchbase

i regret having to write another such utility
but i wanted to incorporate this into a drone.io test
Added some docs to WaitForPersistence
Error retries/improved management of bulk gets

Now tries to avoid certain errors and returns one that it encounters.

cbugg: close bug-895
Don't filter nils out of the error channel

I already did work to prevent sending them.
Automatically reconnect to tap on failure

Jens Alfke wrote about half of this and it looked pretty good.  I did
the parts that close.

I tested under a few error conditions as well as successes (both
continuing after failure and an explicit shutdown and verifying the
goroutines cleaned up properly and stuff).