Added an etc package and loader package so I can keep main.lua "clean."

I discovered a bit of a problem with the module() instruction which has to
do with how it tampers with environment settings. It's the reason I am
forced to do declare Telnet as a local table, and then do _G.Telnet = Telnet
--- the file has its own environment separate from _G.

Added a prequire function which just runs require() in protected mode, so I
can stop it from crashing on a failed require. I'm using this to test for
optional packages like the lzlib library I use for MCCP2 support. Even if
you enable it, if it fails to include the lzlib package, it'll disable it.
Very convenient and now I don't have to keep changing it back to true when I
commit.