update template arg spec

- cannot combine specialization with default value
- cannot invoke a template with keyword arguments
regenerate the parse tab
break out the compiler into separate modules
update the Template classes
add compiler helpers to make scope keys and templates
WIP update to the main compiler