factor out struct tcphdr

that struct is unportable (neither C nor POSIX) and depends on
glibc specific hacks to get the right definition anyway,
so it's better to provide our own copy.
fixes build on musl libc.
Makefile: allow JOHN_LDFLAGS

there's JOHN_CFLAGS to add custom CFLAGS, so do the same for the
LDFLAGS.
tcphdr.h: remove unneeded typedef