Rule: no-func-assign

I'm not sure this is the best name for this rule is and I'm also having a difficult time articulating in the documentation what this rule does and why. I would love feedback on that if anyone has suggestions.

---

The `no-func-assign` rule disallows overwriting functions that were written as a FunctionDeclaration.

```js
function foo() {}
foo = bar;
```

This rule matches JSHint rule W021.