Implement FromStr for IpAddr and SocketAddr

Better than that in rt::uv::net, because it:

* handles invalid input explicitly, without fail!()
* parses socket address, not just IP
* handles various ipv4-in-ipv6 addresses, like 2001:db8:122:344::192.0.2.33
  (see http://tools.ietf.org/html/rfc6052 for example)
* rejects output like `127.0000000.0.1`
* does not allocate heap memory
* have unit tests
Use FromStr for IpAddr in rt::uv::net
extra: Remove all .each methods in smallintmap
std: Fix for-range loops that can use iterators

Fix inappropriate for-range loops to use for-iterator constructs (or
other appropriate solution) instead.
Bugfix .each_edge in middle/graph.rs

Edge iterator used the length of the nodes vector, must be a mistake.
rustc: Fix for-range loops that can use iterators

Transform range loops that can be regular iterator loops.
Implement DoubleEndedIterator on Range

Range is now invertable as long as its element type conforms to Integer.

Remove int::range_rev() et al in favor of range().invert().
Forbid `priv` where it has no effect

This is everywhere except struct fields and enum variants.
Add missing getopts::groups::optflagmulti function
Turn OptGroups into a main opt and a main and an aliased opts

This way opt_present("apple") will match no matter if the user passed -a or --apple
add inflate_bytes_zlib to exra::flate
add extra::flate::deflate_bytes_zlib and a test
extra: add `internal` to {de,in}flate_bytes_ naming to address nit
Fix unit structs in cross-crate situtations
Change Freeze to Static
Change const to static
Document rand module with more emphasis on cryptographic security
Add weak_rng to get a random algo that puts more emphasis on speed than security
Add some documentation about globals in ffi docs
misc help message fix