Avoid unnecessary include.
Move ArgInfo to internal namespace and add ArgList.
Initial support for variadic functions without C++11.