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.
can you add type parameter to Iterator? Or you can use
```
for (Var var : ...getInstantiatedVars()) {
....
}
```