MB-11897 dcp_client: Handle socket connect errors

When the dcp client initiates a socket connect, it could fail due
reasons like server being busy and times out. In such cases, it should be
handled gracefully.

When the view_group gen_server init is called, it first opens couch_file
process and then tries to create a dcp_client instance. If the dcp client
create call fails, the view group gen_server start fails. But the couch_file
process can still be around until the refcounter asynchronously terminates the
file process. But, the ns_server can retry the view_group gen_server start
again by that time and result in yet another couch_file open. couch_file
is a singleton process per file. Hence if the couch_file process for previous
gen_server start attempt is still alive, couch_file:open() call will return
file_already_opened and this error will trigger deletion of current index
files treating it as fatal error. This will trigger rebuilding of index.

Change-Id: If945ac8957f12633fccd642062befe59d771075b
Reviewed-on: http://review.couchbase.org/40373
Reviewed-by: Nimish Gupta <nimish@couchbase.com>
Reviewed-by: Sarath Lakshman <sarath@couchbase.com>
Reviewed-by: Volker Mische <volker.mische@gmail.com>
Tested-by: Sarath Lakshman <sarath@couchbase.com>
Tested-by: buildbot <build@couchbase.com>