allow explicit un-initilised variant ctor

```c++
util::variant<int, double, std::string> var(util::no_init());
var.valid(); // false
util::variant<int, double, std::string>(util::no_init()).get_type_index() == util::detail::invalid_value; // true
```