Add the value interface.

Implement it for CacheRule, Origin, and Domain.
diff --git a/openstack/cdn/v1/services/requests.go b/openstack/cdn/v1/services/requests.go
index 08565e3..4e4c37c 100644
--- a/openstack/cdn/v1/services/requests.go
+++ b/openstack/cdn/v1/services/requests.go
@@ -270,6 +270,11 @@
 	Value map[string]interface{} `json:"value,omitempty"`
 }
 
+type value interface {
+	toPatchValue() map[string]interface{}
+	appropriatePath() Path
+}
+
 // ToCDNServiceUpdateMap casts an UpdateOpts struct to a map.
 func (opts UpdateOpts) ToCDNServiceUpdateMap() ([]map[string]interface{}, error) {
 	s := make([]map[string]interface{}, len(opts))