Keep better track of resources

[See #1623]
[SeeRM #7692]
Move deletion into #remove_resource

Doing it here means that modules manually calling remove_resource won't
screw up the cleanup
Add a method for dealing with hardcoded URIs
No need to have rescue around a print
Add spec for HttpServer#hardcoded_uripath
Add a class for generating random identifiers

Will be useful for all kinds of things, but brought about in discussions
specifically for Util::EXE in #2037.
Make first char's character class configurable
Store inverted hash for better lookups

Also clarifies comment about infinite loops
Remove inaccurate comment
Dup before modifying

Because `remove_resource` modifies @my_resources, we can't call it while
iterating over the actual @my_resources. The following snippet
illustrates why:

```
>> a = [1,2,3,4]; a.each {|elem| a.delete(elem); puts elem }
1
3
=> [2, 4]
```

[See #2002]
Specs and code changes for OptAddress

handles wierness around Optaddress.
Still need to address isues in optaddressRange

FIXRM #7537
opening specs and fixes for OptAddressRange
More optaddressrange specs and fixes

SEERM #7536
mo fixes mo specs

SEERM #7536
SEERM #7537
integrate with egypt's already better specs
More opt specs
OptString specs and better validation
OptRaw specs
OptRegexp specs
Remove pry from gemfile