fix(ng-if): make ng-if evaluate things using javascript logic

Make ng-if evaluate things using javascript logic
Do not reevaluate everything contained within an ng-if when there
is a change of the value of the ng-if, but the truthy of falsy value
does not change

Fixes #3969

BREAKING CHANGE: The expressions
* `<div ng-if="[]">X</div>`
* `<div ng-if="'f'">X</div>`
* `<div ng-if="'[]'">X</div>`

used to be evaluated to `false`