Add Generator and support code.
Add documentation, misc cleanup
Minor Fixes
numeric_limits::min -> lowest, plus clang-format on all added files
set() should actually set the value.
Changes necessary to get tests passing on linux

I don't understand why I needed to reorder the regular expression. Before I
did it was not accepting "p1" as a valid parameter.
merge
Minor fixes to Generator
move split_string back to Util
remove unnecessary #include from Util.cpp
Rearrange Param ctors to have name first (rather than last)
Added a case to deinterleave that works when transposing fixed sized blocks of data. In this case we can safely interleave if the collected stores have unit stride, and each store is simply a load with a stride equal to the vector width. Adding this case makes this optimization a little easier to trigger when doing a simple transpose.
WIP on a generator that uses nested extern stages
Remove regex usage in Generator
Add an option to Generator::emit_filter to have filename not match funcname.
Make GeneratorBase::target public, since that's declared to be best practice for all other GeneratorParams
Generator::get_filter_arguments really needs a body
Add Generator::natural_vector_size()
Added a performance benchmark for vectorizing transposition of fixed sized blocks.
Modified block_transpose performance test to ouput assembly code for each different algorithm.