Added better error reporting on sockaddr table member fields

Various socket functions taking a sockaddr table would report confusing errors when one of the required fields of the table is missing or has the wrong type. This patch adds better type checking and sane error reporting.

Instead of

```
 bad argument #-1 to 'bind' (number expected, got nil)
```

these functions now return

```
got nil for field 'port' in sockaddr argument, expected type number
```