Updated the compile-time metaprogramming utilities

- Added the if_, if_c and unique metafunctions.
- Updated/added test cases.