Static assert that vector of vector is not allowed. (#92)
Static assert that vector of vector is not allowed. (#92)

Fixes #59

This PR adds an `is_vector` metafunction and `static_assert`s in the
constructor's body to disallow vector of vector. I choose to use a
static_assert in the body here instead of an enabler in the template
parameter list for several reasons:

1. Using `std::enable_if` in the template parameter list requires that
the metafunction be defined first, so it would have to live above the
constructors in the Value class, instead of being "hidden" at the bottom
of the class in the private section.

2. The static_assert() produces a slightly clearer error message in this
case.

3. Enablers are most useful when the goal is to disable an overload so
that *some other overload* can be used instead. That's not the goal
here. In this case, we're just detecting an error case. There's no
alterative better constructor to use instead, so an enabler isn't really
useful.
googleapis/google-cloud-cpp-spanner,googleapis/google-cloud-cpp-spanner,googleapis/google-cloud-cpp-spanner,googleapis/google-cloud-cpp-spanner