Gather Steam Server info

I am not a gamer, but this protocol came up during work so I wrote a quick gather module for it.

It should work against any dedicated Steam server.  You can find example, public targets at https://www.gametracker.com/search/cs/?.  

Example usage:

```
msf auxiliary(server_info) > use auxiliary/scanner/steam/server_info
msf auxiliary(server_info) > set RHOSTS steam-hlds.vuln.lax.rapid7.com
RHOSTS => steam-hlds.vuln.lax.rapid7.com
msf auxiliary(server_info) > run

[+] 10.4.25.20:27015 found 'Counter-Strike 1.6 Server'
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(server_info) > set VERBOSE true
VERBOSE => true
msf auxiliary(server_info) > run

[*] Sending probes to 10.4.25.20->10.4.25.20 (1 hosts)
[+] 10.4.25.20:27015 found '{:version=>48, :name=>"Counter-Strike 1.6 Server", :map=>"cs_assault", :folder=>"cstrike", :game_name=>"Counter-Strike", :game_id=>10, :bots=>0, :game_version=>"1.1.2.7/Stdio", :type=>"Dedicated", :environment=>"Linux", :visibility=>"public", :VAC=>"secured", :players=>"0/16"}'
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(server_info) > services

Services
========

host        port   proto  name   state  info
----        ----   -----  ----   -----  ----
10.4.25.20  27015  udp    steam  open   ---
- :version: 48
  :name: Counter-Strike 1.6 Server
  :map: cs_assault
  :folder: cstrike
  :game_name: Counter-Strike
  :game_id: 10
  :bots: 0
  :game_version: 1.1.2.7/Stdio
  :type: Dedicated
  :environment: Linux
  :visibility: public
  :VAC: secured
  :players: 0/16

```
@jhart-r7: ```If I did, I'd probably keep the lower-level stuff for message encoding/decoding in Rex and move the convenience methods to the auxiliary mixin``` <-- that's the original idea I think. (better ask/wait for feedback from @hmoore-r7 / @todb-r7 :) ) As you say, in this case, since you're just providing some methods for encoding/decoding messages, it's a little bit tricky. Maybe it's an indication which it should be re-designed with object oriented programming in mind. In that case, it's clear which the Steam implementation should be in Rex. And a module mixin would allow easy usage of these classes (throug a nice API :)) from modules.

@hmoore-r7:  I don't know when we started to make it really. Some samples have been there since a long time. Indeed the border between Rex and modules is a little bit confusing when you read some code available. But also there is code which I think helps a lot to understand the original idea/design. Probably worths to make it in that way :)

Thanks both for the answers!