first draft of how polymorphism looks

(really the second draft)
first stab at adding structural subtyping

still only partially done but wanted to checkpoint the work
make modtype and modsym parsing consistemt
remove monolithic module flag

pretty sure that's no longer necessary
restore protocol code generation in qbc

it was broken for a bit after a bunch of typing changes. this is
a chunk of work to make it better, but it's still not all the way
back.
i think polymorphism is compiling correctly again

still need to fix the execution so that it's loaded correctly
start writing protocol types to the compiled file

will use these later to polymorph functions based on this typename
remove sub debug statements from parser
fix default functions to not show up as abstract
add load_function_param_types()
expand ./ module into compiled module file
compiling param types string into function header

this is used on comparisons when finding polymorphic overrides
remove all the trailing slashes from module names
rename find_overridden_function to find_default_function
remove the unimorph instruction

shortly going to be replaced by polymorphing during the function call
implement polymorphism directly in call function

no longer need to call the unimorph instruction. new stuff is also
more capable of supporting multimethod dispatch, which will be nice
implemented multi method dispatch

loading across various modules is still a little iffy, but the simple
case works
fixed existing test programs for new syntax
tried fixing newproc.uqb

turns out that without the quotes, the "pid" identifier now conflicts
with the "pid" reserved word. identifiers need to have an independent
namespace so that qbrt reserved words don't have to unnecessarily bleed
into the calling languages. will fix that next.

also made the parser abort on parse errors so there's no confusion about
whether everything worked
mprove how module names are parsed