Simple Factorial program using template metaprogramming to understand the philosophy.