Partially enable validateNoSetStateInRender
The approach i initially took to validating function expressions was to try to extend the mutable range if they are called during render, and then use the mutable range of a function to determine if it's called during render later. However there are cases where the range can be extended for other reasons, as @poteto discovered, so we can't rely on the range extension. We've had several of our validations completely off as a result of this. In this PR i'm re-enabling @poteto's ValidateNoSetStateInRender pass by default, but making the function expression checking use a separate compiler flag. This means we'll have some false negatives, but should guarantee that we avoid false positives. This means we can definitely catch things like: ``` const [state, setState] = useState(false); setState(true); ``` Which we would have allowed by default before.