fix the bug of MHSampler.

@lileicc @cberzan @chrisgioia64 

As discussed in #301 , the current version of MHSampler is incorrect. The reason is that this implementation doesn't remove the unnecessary  variables correctly when they try to build a new instantiation from an old one (some times it will delete less variables, and sometimes it will delete too much variables so that the evidences and queries are not supported). 

In this modified version, this problem was fixed. Though this version has not been tested formally.
@lileicc 
I don't think we need to add the type since you could see that we didn't add type parameter to Iterator everywhere else in the whole project.