Handle overwrites at the precompilation step
No need to export $$function-arity (remove $$ prefix) and make internal
Remove unused quote-let-vars, rename some functions (quote -> emit/compile)
Code reorganization
More code reorganization.

Internal system functions registry is initialized lazily now.
More code reorganization.

Better separation of compiler from primitives and runtime support helpers.
Remove unused imports.
Simplify dynamic function resolution and application

When resolving symbols at runtime to be applied as functions
it is now always assumed that the result will be called with
$$call-nested and a nested lambda is generated instead of
attempting to call the function and trapping arity errors
before generating the nested lambda.