Keep the setting of user created DataLoader in replacing DistributedSampler
🚀 Feature
Motivation

As mention at #2789,  the default behavior of replace_sampler_ddp  is creating a new DistributedSampler. The shuffle setting depends on the kind of dataloader (train or val/test dataloader). However, this behavior override the setting of user defined dataloader, such as shuffle or drop_last. A more reasonable solution is to get this setting direly from user created dataloader, and apply the same setting in DistributedSampler.
Pitch

For example, we can get the shuffle setting form dataloader.sampler. If this is a instance of SequentialSampler, shuffle=False.
Alternatives

Set replace_sampler_ddp=False, and handle it by hand.
Additional context