Rework tcp option handling

TCP options weren't passed properly to listener (defaults were used), so only listening on localhost:4000 worked.

Overall, current TCP option handling (broadcast/recipient) is very confusing and should be rewritten, but that would introduce API changes incompatible with 2.x.