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.