Add strict module

Also fixes leaking globals found by it.

This module helps prevent bugs of the form:
```Lua
function foo()
    print(bar)  -- Global variable "bar" does not exist!
    bar = true  -- Assignment to a global variable from inside a function!
    -- Assign "bar" to something (even nil) from the main file scope to
    -- avoid these errors (if you really need to use global variables).
end
```

The downside is that it slows down access of global variables a bit, but speed-critical functions use locals anyway.

This can also, optionally, warn on the creation of any globals.  Mod namespaces (variables with the same name as the current mod name) are always ignored.