Pull request from Xin Liu

There are some changes of HREX:
1. imported multiprocessing package, which is standard in python 2.7
2. Change the inner for loop of "do replica exchange" into a class function, self.sample_with_each_state
3. The outer loop call this function in parallel, the only difference is the argument 'k'
4. Parallelism are accomplished by multiprocessing. 

Suggestions:
1. As you mentioned, the disk I/O in this function self.sample_with_each_state can be moved out to outer loop, this may significantly improve the performance.
2. If you change "multi-processing" to "multi-threading", it will have further improvement. You can search the difference between process and thread. Unfortunately, python doesn't support real multi-threading. So you may want to change to another language. C++ is a good choice.