Support features that require at least one element in the TypeList

Add BaseTypeList and BaseHeadedTypeList, and specialize TypeList depending on
whether it has at least one element.
Implement At<Pos> feature
Implement Front feature
Implement Back feature