(So is TCL, but I don't think it has a module system.)
In particular, I refuse to call any language a "scripting language" merely because it uses dynamic typing, implicit compilation, or high-level concepts.
Also, I don't know of anyone that would consider Haskell to be a scripting language. If we consider Haskell a scripting language, we might as well consider Java, C, C++ to be scripting languages too...
I'm not saying Lua isn't a full programming language - it's actually my language of choice for day-to-day hacking, supplemented with C as necessary. It was clearly designed to accommodate projects where it isn't primary language, though.