HTTP: Handle cancellation within callback

If a request was cancelled from within the callback, it would result in
calling lcb_http_request_finish() twice which would result in the
library accessing freed memory.

This commit adds a sentinel so that finish is only called once.
Additionally, more tests have been added to test the various aspects of
the HTTP API.

Change-Id: Ibba86586c360e3d929b0ba998282725e5f9704c5
Reviewed-on: http://review.couchbase.org/43251
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Tested-by: Mark Nunberg <mnunberg@haskalah.org>