Optimized UDPSocket send to use cached resolved address

In Ruby every when UDPSocket#send called with host and port, address is being resolved and packed, which leads to several system calls, transferring about 12kb of data. There is an option to pre-pack address once, and then use this packed value for sending messages. Benchmark shows about 6x speed improvement when using IP addresses, and about 50x with DNS names.