Evenly distribute mutations to indexer-connections

This means indexer can receive sequence out of order for same vbucket.
Use *api.Mutation to move mutations around

avoid making copy of the mutations using pointer in channels
Change sequencemap to a slice

avoid copy of sequencemap while manipulating it
Insert in back index before main index

Till there is transactionality between main/back index,
it always better to insert into back index. If there is failure,
before mutation gets inserted in main index, its a much more valid state.
An entry in main index but not in back index is something system
can deal with.
Moving back to vbucket based connection distribution.
Add optional debug logging for indexer

adds a command line parameter to indexer(debugLog) to enable debug logging
When debugLog is enabled, all database insert/read/scan query will be logged
Persist sequence vector for all indexes

After persist interval is over, persist sequence vector for all indexes
This makes sequence vector persistence global rather than index based
Add command line option to specify indexer node

Indexer node can now be specified as a command line argument
while starting index manager
Drop index should fail if indexer is not running

Index Manager should return fail if indexer cannot service the drop
index request. Fixed a bug here which was preventing this from happening.
bug fix for indexer init in index_manager
Skip nil secondary keys

If a nil secondary key is received, indexer needs to skip it.
KV Insert - If nil secondary key is for a new insert, it can be skipped.
KV Update - If nil secondary key is due to an update in KV, the old
back/main index entries need to be deleted.
Move the scan related code to range.go

persist.go now has code related to index insert/update/delete
range.go now has code related to index scan
Rename range.go -> scan.go for clarity
Add performance logging for index read and write

Every 10000 mutation processed will be logged
Index Items Read for each query will be logged
Error handling for empty sequence vector from indexer.
Allocate and initialise api.SequenceVector
Always return a valid sequence vector to projector

Even if there has been no mutation, sequence vector should be zero'ed
and sent to projector.
Merge branch 'master' of https://github.com/couchbaselabs/indexing
Persist sequencemap for every mutation
invariant facts for secondary index.