Serialize Shard Level Operations from ExecutorPool

Add a flag in every shard to indicate that a thread is
currently working on it.
In TaskQueue, threads check this flag first to ensure that
only one thread picks up task from this shard
Mark certain tasks like VBDeleteTask and VBSnapshotTask
as needing serialization

Change-Id: Ib4f0ae14d90a3d95ea0a59531197da4f87f388d3
Reviewed-on: http://review.couchbase.org/36286
Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com>
Tested-by: abhinav dangeti <abhinav@couchbase.com>