Make 'forin' check recognize negative checks with continue

This patch modifies the 'forin' check so that it correctly recognizes
negative conditional checks using hasOwnProperty and continue. For example:

``` javascript
for (var key in collection) {
    if (! collection.hasOwnProperty(key)) {
        continue;
    }
    doSomething();
}
```

In addition, the check was also made smarter with respect to the
specific conditional check. If the hasOwnProperty method is called on
the wrong collection (not the one that is being looped over) or the
argument of the hasOwnProperty method is different from the loop variable,
a warning is raised.

References:

    Closes GH-229

Note that this is just a reopening of the former pull request #1627 against the current master.