Feature/variant visit (#554)
* add variant visit to c++11 and above
* visit legacy added
* update with multiple variants visit for variadic
* make it build on gcc and clang ubuntu
remove declval from utility.h due to ambiguity against type_traits.h version when using STL