in metaprogramming test: std::conditional -> Cond

Cond<B,T,F> substitute for std::conditional<B,T,F>::type.
modify a test: macro -> template

use template instead of macro in a test of metaprogramming.
Merge branch 'metaprogramming'
add a test for the complexity of list::size()

The time complexity of list::size() is still O(n) in gcc 4.8.1 although
C++11 stipulate it to O(1).
add a test for map::insert(beg, end)

if the key is already in the map, insertion will keep the old value.
add a metaprogramming test: Hanoi