Add remaining Go-supported WKTs to the list of types to generate XXX_WellKnownType for.

These don't (yet) have support in jsonpb, but will soon.
diff --git a/protoc-gen-go/generator/generator.go b/protoc-gen-go/generator/generator.go
index 0e40162..48f029d 100644
--- a/protoc-gen-go/generator/generator.go
+++ b/protoc-gen-go/generator/generator.go
@@ -1655,8 +1655,23 @@
 // Names of messages in the `google.protobuf` package for which
 // we will generate XXX_WellKnownType methods.
 var wellKnownTypes = map[string]bool{
+	"Any":       true,
 	"Duration":  true,
+	"Empty":     true,
+	"Struct":    true,
 	"Timestamp": true,
+
+	"Value":       true,
+	"ListValue":   true,
+	"DoubleValue": true,
+	"FloatValue":  true,
+	"Int64Value":  true,
+	"UInt64Value": true,
+	"Int32Value":  true,
+	"UInt32Value": true,
+	"BoolValue":   true,
+	"StringValue": true,
+	"BytesValue":  true,
 }
 
 // Generate the type and default constant definitions for this Descriptor.
diff --git a/ptypes/any/any.pb.go b/ptypes/any/any.pb.go
index c30c737..c809f44 100644
--- a/ptypes/any/any.pb.go
+++ b/ptypes/any/any.pb.go
@@ -88,6 +88,7 @@
 func (m *Any) String() string            { return proto.CompactTextString(m) }
 func (*Any) ProtoMessage()               {}
 func (*Any) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (*Any) XXX_WellKnownType() string   { return "Any" }
 
 func init() {
 	proto.RegisterType((*Any)(nil), "google.protobuf.Any")
diff --git a/ptypes/empty/empty.pb.go b/ptypes/empty/empty.pb.go
index 75513c4..5af4b19 100644
--- a/ptypes/empty/empty.pb.go
+++ b/ptypes/empty/empty.pb.go
@@ -42,6 +42,7 @@
 func (m *Empty) String() string            { return proto.CompactTextString(m) }
 func (*Empty) ProtoMessage()               {}
 func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (*Empty) XXX_WellKnownType() string   { return "Empty" }
 
 func init() {
 	proto.RegisterType((*Empty)(nil), "google.protobuf.Empty")
diff --git a/ptypes/struct/struct.pb.go b/ptypes/struct/struct.pb.go
index 9f2ef62..004409e 100644
--- a/ptypes/struct/struct.pb.go
+++ b/ptypes/struct/struct.pb.go
@@ -68,6 +68,7 @@
 func (m *Struct) String() string            { return proto.CompactTextString(m) }
 func (*Struct) ProtoMessage()               {}
 func (*Struct) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (*Struct) XXX_WellKnownType() string   { return "Struct" }
 
 func (m *Struct) GetFields() map[string]*Value {
 	if m != nil {
@@ -99,6 +100,7 @@
 func (m *Value) String() string            { return proto.CompactTextString(m) }
 func (*Value) ProtoMessage()               {}
 func (*Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+func (*Value) XXX_WellKnownType() string   { return "Value" }
 
 type isValue_Kind interface {
 	isValue_Kind()
@@ -326,6 +328,7 @@
 func (m *ListValue) String() string            { return proto.CompactTextString(m) }
 func (*ListValue) ProtoMessage()               {}
 func (*ListValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (*ListValue) XXX_WellKnownType() string   { return "ListValue" }
 
 func (m *ListValue) GetValues() []*Value {
 	if m != nil {
diff --git a/ptypes/wrappers/wrappers.pb.go b/ptypes/wrappers/wrappers.pb.go
index 1363bb6..a0fe341 100644
--- a/ptypes/wrappers/wrappers.pb.go
+++ b/ptypes/wrappers/wrappers.pb.go
@@ -46,6 +46,7 @@
 func (m *DoubleValue) String() string            { return proto.CompactTextString(m) }
 func (*DoubleValue) ProtoMessage()               {}
 func (*DoubleValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (*DoubleValue) XXX_WellKnownType() string   { return "DoubleValue" }
 
 // Wrapper message for `float`.
 //
@@ -59,6 +60,7 @@
 func (m *FloatValue) String() string            { return proto.CompactTextString(m) }
 func (*FloatValue) ProtoMessage()               {}
 func (*FloatValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+func (*FloatValue) XXX_WellKnownType() string   { return "FloatValue" }
 
 // Wrapper message for `int64`.
 //
@@ -72,6 +74,7 @@
 func (m *Int64Value) String() string            { return proto.CompactTextString(m) }
 func (*Int64Value) ProtoMessage()               {}
 func (*Int64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (*Int64Value) XXX_WellKnownType() string   { return "Int64Value" }
 
 // Wrapper message for `uint64`.
 //
@@ -85,6 +88,7 @@
 func (m *UInt64Value) String() string            { return proto.CompactTextString(m) }
 func (*UInt64Value) ProtoMessage()               {}
 func (*UInt64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+func (*UInt64Value) XXX_WellKnownType() string   { return "UInt64Value" }
 
 // Wrapper message for `int32`.
 //
@@ -98,6 +102,7 @@
 func (m *Int32Value) String() string            { return proto.CompactTextString(m) }
 func (*Int32Value) ProtoMessage()               {}
 func (*Int32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+func (*Int32Value) XXX_WellKnownType() string   { return "Int32Value" }
 
 // Wrapper message for `uint32`.
 //
@@ -111,6 +116,7 @@
 func (m *UInt32Value) String() string            { return proto.CompactTextString(m) }
 func (*UInt32Value) ProtoMessage()               {}
 func (*UInt32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+func (*UInt32Value) XXX_WellKnownType() string   { return "UInt32Value" }
 
 // Wrapper message for `bool`.
 //
@@ -124,6 +130,7 @@
 func (m *BoolValue) String() string            { return proto.CompactTextString(m) }
 func (*BoolValue) ProtoMessage()               {}
 func (*BoolValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+func (*BoolValue) XXX_WellKnownType() string   { return "BoolValue" }
 
 // Wrapper message for `string`.
 //
@@ -137,6 +144,7 @@
 func (m *StringValue) String() string            { return proto.CompactTextString(m) }
 func (*StringValue) ProtoMessage()               {}
 func (*StringValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+func (*StringValue) XXX_WellKnownType() string   { return "StringValue" }
 
 // Wrapper message for `bytes`.
 //
@@ -150,6 +158,7 @@
 func (m *BytesValue) String() string            { return proto.CompactTextString(m) }
 func (*BytesValue) ProtoMessage()               {}
 func (*BytesValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+func (*BytesValue) XXX_WellKnownType() string   { return "BytesValue" }
 
 func init() {
 	proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue")