do per gpu seeding for shuffling batches with batch level sampling, fix bug with not disabling iterator cache
do per gpu seeding for shuffling batches with batch level sampling, fix bug with not disabling iterator cache

Summary:
we want to avoid the case where each gpu has a batch from the same dataset. not sure if this is happening right now, but to avoid this we can seed a shuffle by the GPU rank.

also fixed a bug where we need to reset iterator for the new batch sampling

Differential Revision: D28085750

fbshipit-source-id: 1643738b397d850f737fcd27c6398c216342464a

pytorch/fairseq,pytorch/fairseq,pytorch/fairseq