Make IP addresses immutable
Fix equality check
Refine contract check
Fix ipv4 check on addresses with a leading 0
Have Optimization Coach report unsound float division missed optimizations.
Use locations from typed identifiers for type-generated contracts.
Make TR-generated identifiers have the same name as original identifiers.

Makes error messages nicer, and makes it easier to correlate with source code.
Default implementations are only reached in the absence of method tables.
Adjust type for `dns-get-address`
Fix the returned type of `dns-get-mail-exchanger`.
Redex: fix term-let/#:lang keyword interaction

Account for the fact that define-language bindings may get
shadowed by term-let when using the same identifier as the language.
adjust dependencies to allow mrlib/terminal to use the framework

Not sure if this is the right fix, but hopefully it will allow
the build to happen while we debate the right fix.
Redex: pass language id through for term errors
Misc improvements to `net/dns' and `net/private/ip'.

* Some racketisms.

* Use explicit `in-list' etc in for loops.

* Remove some redundant requires from `net/dns'.

* Move all tests to `tests/net', including a new `tests/net/ip'.  In the
  future there's a plan to have things like stripped zos etc for
  distribution, but we're not there yet, and the net collection is
  already organized nicely so this also makes it more uniform.

* Include the dns tests in the main test file.
Avoid output in ftp tests.

Also add a note explaining why the output is not tested.
add edit|copy and edit|select all menu items to mrlib/terminal frames
add installed-pkg-names
add support for updating packages via
drracket's "install package" menu item

It will infer whether to use 'raco pkg update' or
'raco pkg install' based on the currently installed
set of packages (but, of course, the details
section of the dialog lets you override this inference
if necessary)
Revert "adjust dependencies to allow mrlib/terminal to use the framework"

This reverts commit aa29fe01a820522aa5ddccf26e3e2f2fdbc798a6.

This change merges too much stuff into a high layer of the dependency structure
Separate out mrlib/terminal from the rest of mrlib, dependencieswise

The mrlib/terminal library fits in the mrlib collection in that it is
a random library that uses our GUI system that doesn't belong in
racket/gui somewhere.

It also doesn't really fit into the framework as the framework is
supposed to be a colleciton of useful mixins for our racket/gui
classes.

It does, however, benefit from using the framework (and the string
constants library) so the best option seems to be to think of mrlib as
consisting of separate libraries that fit into two different layers
of the dependency hierarchy. So that's what this commit does.