Don't raise W083 if a function never touches the outer scope

**W083** warns you against using functions within loops, however, it generates a lot of false positives. This patch reduces the number of false positives by checking whether functions access non-local variables. If a function uses only its local variables, then it is safe to be used within loops:

```javascript
for (var i = 0; i < 10; i++) {
  doSomething(function () { console.log("Hello"); }); // This is pretty safe and shouldn't generate W083.
}
```