Send back more SOCKS5 errors where appropriate.

As a follow up to #12971 (moved), our SOCKS5 code can now send back specific errors in response to requests fairly easily. A quick glance through the code suggests that the following cases (at a minimum) should be changed to do the right thing:

  • Invalid/malformed address (SOCKS5_ADDRESS_TYPE_NOT_SUPPORTED, SOCKS5_GENERAL_ERROR, SOCKS5_NOT_ALLOWED depending on the case)
  • CONNECT command while SafeSocks is set to an IP address (SOCKS5_NOT_ALLOWED)

One could argue that #11138 (moved) would magically fix these things as well, but since returning errors is a one line addition (and the unit tests) per case, there's no reason not to make the changes now.