load multiple template libraries

allows grappa and clang templates to refer to base templates while still overriding those with name conflicts.

also group timing pipeline timing and template loader for grappa
refactor templates to jinja in grappa
add jinja2 to requirement py modules
dont change directories just to emit code
refactor operator templates to stack jinja2 loaders
flake