Fix a bug in RangeWalker when resolution fails

## The bug
The `RangeWalker` class is designed to parse a string and either be `valid?` or not depending on how that parsing went. In the situation where you provide an unresolvable hostname, it breaks the contract by raising an exception.

## Verification steps
 - [x]  `Rex::Socket::RangeWalker.new("foo.bar.")`
 - [x] verify that it does not raise
 - [x] verify that `valid?` returns `false`


The commit that actually fixes the bug is in 2ed9772; the rest of this is just cleanup and better docs since I was already elbow deep in it.