Seems like we are doing a lot of coercion on the type:
https://github.com/vmware/vmware-vshield/blob/master/lib/puppet/type/vshield_application.rb#L15-L21

Maybe:

1. don't munge the array to a string.

```
newproperty(:value, :array_matching => :all, :sort => true, :parent => Puppet::Property::VMware_Array ) do
  desc ...
end
```
2. don't need to sort here anymore:
```
case value = @application['element']['value']
when Array
   value
when String
   value.split(',')
else
...
end
```
3. create an alternate provider that overrides resource[:value]
```
def resource_value
  resource[:value].join(',')
end
```
```
Puppet::Type.type(:vshield_application).provide(:nsx, :parent => Puppet::Provider::Vshield_Application::Default) do
  ...
  def resource_value
    resource[:value]
  end
end
```