Changed Gemfile to use RubyDNS 0.7.0.

Also removed Sourcify since it's no longer needed.
Re-enabled DNS extension in config files.
Removed unneeded files in ruby/ subdirectory.

Changed Logger overrides to disable logging instead of using BeEF's
print_* methods. RubyDNS logging is too verbose. The DNS extension will
perform debug logging on its own.
Changed Dns::Server to use RubyDNS 0.7.x API.

At this point, it is just a prototype that resolves any request to
1.1.1.1.
Removed obsolete Sourcify reference in loader.rb.
Implemented new Rule model and #add_rule method.
Re-implemented #generate_id in Core::Main::Crypto.

This is a better home for it since that is where other OpenSSL
crypto/token generator methods reside.
Implemented #get_rule method.
Implemented #remove_rule method.
Implemented #get_ruleset method.

Also refactored #get_rule to use new #to_hash helper method since
Implemented #remove_ruleset method.
Appended ! to #remove_rule and #remove_ruleset.

Adhering to the Ruby convention, this indicates that these methods
mutate the receiver and, therefore, should be considered dangerous.
Implemented #process method that handles requests.

The DNS server now searches for matching rules and sends its response
when handling incoming requests. However, all rules are still assigned
the same callback for the moment.
Added @database to Dns::Server as a model reference.
Implemented #validate_response method in Dns::Rule.

Perhaps the ugliest part of the DNS extension, it is also the most
crucial. This method ensures that a given resource and response are
appropriate for each other. It must also prevent RCE vulns since the
input is eval'd later on.

However, HINFO, MINFO, and especially TXT validation is not strict
enough. These three need to be reviewed scrupulously since a 100%
anti-RCE solution may prove to be difficult.
Changed data type of :callback property to Object.

Using String was sufficient but this way is more consistent.
Improved BeEF::Filters support for IPv4 and IPV6.

Changed regex in #is_valid_ip? to be more strict since it previously
would have matched an invalid IP such as 999.999.999.999. Changed its
name to #is_valid_ipv4?.

Added new #is_valid_ipv6? method that validates IPv6 addresses. It is
very comprehensive and will match normal IPv6 addresses, zero
compressed, link-local with zone index, and IPv6 addresses that have
IPv4 embedded, mapped, and translated.

Added new #is_valid_domain? method that validates domain names.
Updated #validate_response to use BeEF::Filters.
Added unit test assertions for new config options.
Updated interface unit tests with new method names.