Implemented TypeList and TypeAt.

TypeList is a variadic template that operates on the list of template
arguments. Length is implemented as a constant in this class using
sizeof...(Args).

TypeAt is a function that, given an index and a TypeList, returns the type
at the specified index.
Added IndexOf algorithm.
Minor changes to formatting and build.
Codelite changes
Add Append and Erase typelist algorithms.
Refactored existing unit tests to use TypeList typedef.
Added tests for Append and Erase.
Updated .gitignore