Prevent custom data payload sending empty aps key

When a Message with custom data payload is sent, without any data in the
`aps` data key, the empty array is encoded into the JSON. This can cause
problems on the receiving device.

The empty array is encoded as "[]" instead of an empty object "{}". This may also be fixed by forcing a cast to an object, but I see no evidence that this would be any better than removing the key entirely.

Note: This may also be a a bug in the library handling the push on the device, which I will investigate, but I see no harm in fixing it at this end also.