add ability to create/update attachments using HTTP PUT

Allows for adding/updating attachments using simple curl command:
curl -XPUT .../db/doc_id/attachment_name?rev=document_rev_id --data-binary @attachment_file
changes based on PR comments

fix issue where 409 not generated when rev supplied for new doc
added test cases to verify 409 returned when expected
add support for If-Match header in addition to rev request param
Bucket shadowing: pull/import side basically working
Bucket shadowing: Push side is basically working
Bucket shadowing: Added unit tests
Bucket shadowing: Support deletions

Together with the previous three commits, this
fixes #7 (although not as originally described)
Cleaned up the “go vet” call in test.sh

No more need to ignore some warnings; they’ve been fixed in the code.
Merge pull request #233 from mschoch/support-manual-attachment-api

add ability to create/update attachments using HTTP PUT
Bucket shadowing: Minor cleanup.
Added package github.com/samuel/go-metrics/metrics
REST: Added expvar as /_expvar with go-couchbase connection info

Patch written by Dustin
Fixed panic/crash in debug.go
Bucket shadowing: Can now filter which docs are shadowed (with a regex)

Set db config shadow.doc_id_regex property to a valid regex, which must
then match the entire docID/key.
Added operation timings to expvar
Set Content-Type of “application/octet-stream” for continuous _changes

This prevents clients and gateways from trying to sniff a content-type
by buffering up the beginning of the response, which can cause the
actual client app code from receiving data.
Clearer logging when importing existing bucket docs into database.
Better error handling writing multipart documents (prevents a crash)

Fixes #230
Fix “composite literal uses unkeyed fields” warnings in debug.go
Added support for gzip-encoded HTTP responses

Fixes #238
Added support for gzip-encoded HTTP request bodies

For couchbase/couchbase-lite-ios#240