udp: make it possible to receive empty udp packets

A udp packet can have 0 content.
In that case nread will be equal 0, but addr != NULL.
Instead of this, change
```javascript
// In self._handle.lookup(), line 311 prior to change:
var req = { buffer: buffer };  // Keep reference alive.
```
to
```javascript
var req = { buffer: buffer, length: length };  // Keep reference alive.
```
and in `afterSend()` do
```javascript
function afterSend(err) {
  this.callback(err ? errnoException(err, 'send') : null, this.length);
}
```
Want to keep the functions as hoisted as possible.