CBIDXT-62 Define structs to represent Topology

Index definition is captured in IndexDefn(index.go)
and IndexInst(index.go) represents the active instance
of an index. Partition Definition is captured in
PartitionContainer(partition_container.go and
key_partition_container.go). This is the information
seen by Router to router keys to Endpoints.

Slice information is captured in Partition Instance(
partition_instance.go) and slice_container.go. This is the
second level of topology details seen only by the Indexer.

Patchset2:
Added Add/Update/Remove methods to both PartitionContainer
and SliceContainer interfaces and its implementation

Patchset3:
- Fix typos
- Fix minor issues(type assertions)

Patchset4:
Removed mutation.go which made its way into the commit
by mistake

Patchset5:
- Change IndexInstId and IndexDefnId to uint64(index.go)
- Add Endpoints method to PartitionDefn and its
  implementation for key_partition_container
- More comments

Change-Id: Ia01ec08b4cb8180264b8a99dd7c21456c838e268
Reviewed-on: http://review.couchbase.org/37997
Reviewed-by: Deepkaran Salooja <deepkaran.couchbase@gmail.com>
Tested-by: Deepkaran Salooja <deepkaran.couchbase@gmail.com>