Fixed Scoping Issue

TODO: We can now drop the raw_call. This should shorten the definition of def_generic.
Cleaned up raw_call. Now values in the main Dict can be GCed.
In @def_generic, you can sepecify a required argument by trailing it with an '!'.
This argument should not have a specified default.
Updated README.md and examples.jl.