NCBC-698: Add BucketType property to IBucket

User code should be able to distinguish Memcached and Couchbase buckets
without relying on SDK implementation details (calling `bucket.GetType()
== typeof(CouchbaseBucket)`)

Change-Id: Id1efdb895cd5c5f7e80e2e044c19b3f97902d2bb
Reviewed-on: http://review.couchbase.org/42374
Reviewed-by: Simon Baslé <simon@couchbase.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
NCBC-699: Upsert should take IDictionary input param

The whole IBucket interface has very clean definitions using interfaces
where appropriate. Upsert operation seems to stand out of the line there
with defining Dictionary input parameter instead of IDictionary. This
seemed as an oversight.

Change-Id: I6b5285fa90e7c60c49db0504ebe34b9139f0ea80
Reviewed-on: http://review.couchbase.org/42375
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
NCBC-692: Increase field sizes to avoid overflow errors

Change-Id: Ieb4eeb20e8c6ab9e246f831884d5576d2aacf2ea
Reviewed-on: http://review.couchbase.org/42376
Reviewed-by: Simon Baslé <simon@couchbase.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
NCBC-697: Ensure ConfigObservers collection is not null

In certain situations when EnableConfigHeartbeat is enabled, the timer may
go off when the ConfigObservers collection is still null. This patch
ensures that collection is not null before trying to acquire the observer.

Change-Id: I4ba48e051d775a675563da1cb764edd82f283b32
Reviewed-on: http://review.couchbase.org/42377
Reviewed-by: Simon Baslé <simon@couchbase.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
NCBC-684: Rename Couchbase.dll to Couchbase.NetClient.dll

Change-Id: Iffbc2f41554ddef1f6949c2a3280a1beabb8899d
Reviewed-on: http://review.couchbase.org/42378
Reviewed-by: Simon Baslé <simon@couchbase.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
NCBC-676: Make JsonSerializerSettings externally configurable.

Change-Id: I86e627f0d15bb02670f8411fee04a5b56e834b87

Conflicts:
	Src/Couchbase/Core/Transcoders/DefaultTranscoder.cs
Change-Id: I16dc1889ba47762dee863ecaca019a847582bf19
Reviewed-on: http://review.couchbase.org/42392
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Unit test updates to reflect API changes

Change-Id: If0a19a942361ef02c43a24f03131d2932bb3dfb9
Reviewed-on: http://review.couchbase.org/42391
Reviewed-by: Matt Ingenthron <matt@couchbase.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
NCBC-696: Use default settings for SecurityProtocol

The ServicePointManager.SecurityProtocol controls the security protocol
that web clients will use if they are a secured channel (SSL). By default
the settings for these are SecurityProtocol.Tls | SecurityProtocol.Ssl3.

There is an exploit of the Ssl3 protocol known as the "POODLE Attack", so
it's advised that the users of the client (or anyone using SSL) use TLS
instead of SSL3. This commit removes the explicit setting of
ServicePointManager.SecurityProtocol in the client, so that the default is
used. Users of the client can and should override this and set it to TLS
in their application servers.

Note that POODLE is very difficult to exploit from an SDK client, but in
general removing SSL3 is good to avoid future exploits of this no-longer-
recommended protocol.

Change-Id: I7dd49cefc85ebdad151deabbe65b87d0bf47a703
Reviewed-on: http://review.couchbase.org/42395
Reviewed-by: Matt Ingenthron <matt@couchbase.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Remove old diagrams and files references from project

Change-Id: Ia3a4a882a420218203279c6bdda8b43beaf39aff
Reviewed-on: http://review.couchbase.org/42409
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Simon Baslé <simon@couchbase.com>
Remove 'tester' projects from min repo

These will be refactored and moved to a seperate repo on labs.

Change-Id: I1ef3d497a210d915f5c01f50a50baa9f17c704a8
Reviewed-on: http://review.couchbase.org/42410
Reviewed-by: Simon Baslé <simon@couchbase.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Removing old script from the enyim days

Change-Id: I9ed90500ae2c256c6389f072c593f686e3ed4d31
Reviewed-on: http://review.couchbase.org/42411
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Simon Baslé <simon@couchbase.com>
Remove old markdown file. New one (README.md) will be updated soon

Change-Id: I73abd2e85ba17d33d350fe0bc530bd2356c1d7cc
Reviewed-on: http://review.couchbase.org/42412
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Simon Baslé <simon@couchbase.com>
Ensure that each server is tried during a config heartbeat

Change-Id: I7547effadbc5a76fb5c801450c0f069d2b272d32
Reviewed-on: http://review.couchbase.org/42426
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Matt Ingenthron <matt@couchbase.com>
Use consistent error handling when IO fails

Change-Id: Idfca664637d5e3db41770fe0137b11b2cab36952
Reviewed-on: http://review.couchbase.org/42427
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Brett Lawson <brett19@gmail.com>
Ensure that heartbeat configuration is completed before raising next event

Change-Id: I0389212c2b35508ef7637e59c610fac1cdbaca45
Reviewed-on: http://review.couchbase.org/42449
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Mark Nunberg <mnunberg@haskalah.org>
Mark the server as dead when it is disposed

When the server is disposed, mark as dead so that an in-progress operation
or view request will not select it. This should eliminate some ODE's but
not all. This commit also makes the _disposed and _isDead variables
volatile.

Change-Id: I88b2e12079582c66725d898a6eaeee154163ea99
Reviewed-on: http://review.couchbase.org/42450
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Simon Baslé <simon@couchbase.com>
NCBC-585: Make Cluster object use Dispose correctly

Change-Id: If98cb3499a634488f03bf93b914f616067552ef3
Reviewed-on: http://review.couchbase.org/42451
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Simon Baslé <simon@couchbase.com>
NCBC-702: Make Release and AddRef un-callable in assemblies other than Couchbase

and Couchbase.Tests. IRefcountable is an internal interface whose method
implmentations should not be called externally. This commit makes them
(mostly) un-callable from assemblies that are not 'friend' assemblies of
Couchbase.NetClient.

Change-Id: Ie796909a747eaaf002fcf0984624d9ed0589c5d7
Reviewed-on: http://review.couchbase.org/42452
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Simon Baslé <simon@couchbase.com>
NCBC-703: When an operation timesout ensure that an NRE is not thrown

Change-Id: Iba4be3d23a1d416b2c64a4d0c04d22b3ec0c9011
Reviewed-on: http://review.couchbase.org/42555
Reviewed-by: Mark Nunberg <mnunberg@haskalah.org>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
NCBC-704: Ensure opaque value is unique for all operation instances

All operations are implementations of the base class OperationBase<T>
which is generic. This class held a static variable to use as a counter
base; which is flawed because for each type of T instantiated, a new
static variable would be created because internally each type of T is
compiled into it's own class. This moves the opaque generator into a new
class, SequenceGenerator, so that the identifier is unique and incremented
correctly.

Change-Id: I7b159e896a086b40490177e158924655fa0c7166
Reviewed-on: http://review.couchbase.org/42573
Reviewed-by: Mark Nunberg <mnunberg@haskalah.org>
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>