C++17 changed the definition of literal types so that unions that
have at least one non-static data member of non-volatile literal type
are also considered literal types.
This patch implements that new rule and also adds a test for closure
types (10.5.2) and for unions (10.5.3) to the existing test file for
literal types.
clang-format: please reformat the code