Fix multicast socket cannot pause & send receive event synchronously

- The existing udp socket cannot be paused if the multicast socket is used.
- Multicast socket is reading on a separate thread; therefore, receive events can be sent on multiple threads. If data result and metadata result does not arrive in order, the plugin cannot assemble them into `receiveInfo` correctly. I can switch to use the `multipart message` if we don't want to support previous `cordova-android`.