Added bad_variant_access exception
Fix at_index error not caught by clang. See http://llvm.org/bugs/show_bug.cgi?id=20222 and https://connect.microsoft.com/VisualStudio/feedback/details/914817/erroneous-overload-resolution-with-multiple-direct-bases
Added variant_size, variant_element and get à la std::tuple