tracing grappa
refactor templates in clang

1. replace formatted strings with jinja2
2. replace most code-inlined templates with files
move not-currently-used twopass/operator-at-a-time templates
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
Merge branch 'bmyerz/multi-key-join' into bmyerz/refactor-templates
bug fix missing ; in template
remove newlines in template
Merge branch 'bmyerz/multi-key-join' into bmyerz/refactor-templates
symmetric hash join allows two keys
make jinja2 fail upon undefined keys; include keytype in symhashjoin
hash_tuple should be used not std::hash
syntax error in uda template
fix: allow template to do join','
fix mapping_var_name key in templates
forgot to add scan.pp changes