Rewrite for code reusability

Replace rcon_client with a more general query class that can be
used to send other types of queries, not just for RCON.
Move sampquery code to sampquery/
Remove usage of cancel()

boost::asio::ip::udp::socket::cancel() is not portable according to the
documentation, so just re-open the socket instead.
Move hostname resolution out of rcon