Silence valgrind memcheck error by memset()-ing pkt to 0

valgrind reports:

    Syscall param write(buf) points to uninitialised byte(s)

In this case, it is a false positive, but adding this single memset at
attach start-up means the program is now clean when run with "valgrind
--trace-children=yes dtach -c ...", which can make future debugging
easier.
Prevent buffer overflow in socket pathname

For example: "dtach -c <really-long-pathname> sh" would have resulted
in overflow.

I see no straight-forward way around the Unix domain socket sun_path
size limit, so just inform the user and exit(1).