The first attempt at wiring up the socket callbacks was a bit too
precious. We can simplify and do what other modern socket callback
users do: don't bother with the callback locks and call shutdown before
release.
We also protect against spurious callbacks by only doing work in the
callbacks when the sk user_data points to a sock_info which points back
to the socket.
Signed-off-by: Zach Brown <zab@versity.com>