remove inheritance from HListFunc to Func

Refactors HListFunc to be a stand-alone trait by moving type parameter
T < TCList to type variable L.
This allows HNilFunc and HConsFunc to have common trait so they can be
folded from a List[Int]. See test.
Merge pull request #257