Fix and improve multiple places about random number generation and shuffling

* `cluster_seedgen()` now uses system entropy source `/dev/urandom` whenever possible.
* Fix `Caffe::RNG::operator=()`. The original version will result in two `shared_ptr` pointing to the same object with different reference counts and ultimately use-after-free or double-free problem.
* O(N) instead of O(N^2) algorithm for `ImageDataLayer::ShuffleImages()`.
* convert_imageset will now properly seed the random number generator before shuffling, no longer producing the same shuffled result each run.
std::random_shuffle doesn't receive the random number generator as last (optional) parameter?