[fidl][cpp] Use std:: types for non-nullable strings and vectors.

This change touches just about all uses of FIDL in C++ in the tree and
beyond.

The main change is that non-nullable strings are now represented in C++
as std::string and non-nullable vectors as std::vector. Their nullable
equivalents are still fidl::StringPtr and fidl::VectorPtr.

This changed exposed some of the fragility of the union implementation
so that's switched to use fit::internal::variant.

To simplify the transition of out-of-tree users of FIDL the C macro
USE_STD_FOR_NON_NULLABLE_FIDL_FIELDS is defined. This allows changes in
Dart and Skia to land in their trees that will work against Fuchsia
before and after this change lands. This will be removed as soon as this
set of changes lands.

Test: built every test, ran CQ, booted x64 and poked around.

Change-Id: I738d31c8f1cf6b9f7f0d3d94f8d49731de7f4b00
303 files changed