indexer: Use index snapshot abstractions for scanner

Storage manager is refactored to generate IndexSnapshot
objects whenever a new stability timestamp is processed.
The scan coordinator will no receive IndexSnapshot
corresponding to the requested atleast-timestamp and
scan operates on IndexSnapshot instead of mutable
index partition map and index instance map data structures.

Change-Id: Ib47c110678e0e3056ae74f991d8771038fd5147f
Reviewed-on: http://review.couchbase.org/44075
Reviewed-by: Deepkaran Salooja <deepkaran.couchbase@gmail.com>
Reviewed-by: Sarath Lakshman <sarath@couchbase.com>
Tested-by: Sarath Lakshman <sarath@couchbase.com>