Fixes/set fact failures

The core of this pull is to fix behaviour such that a set_fact value that references undefined vars, is properly flagged/failed if undefined vars are in error mode.

The "fix defaults to enforce integer where appropriate" exists purely to fix existing bugs that become exposed via the changed execution path; that fix is correct, it's just an annoying dep for the set_fact fixes to keep the existing test code behaving.