address 0.2.0

Network address types with strict validation, owned & borrowed variants, and standard library conversions.
Documentation
# Issues

- Ambiguous conversions. Examples: `Host::from(1u32)` and `Authority::from((1u32, 80))`.
- Document on the `TryFrom<String>` impls that the string is returned in the error; only the
  `InvalidAddressError` doc says the value is preserved.
- Return `InvalidAuthority` for any unbracketed host with a colon; RFC 3986 allows none.
  Today it depends on the text before the last colon parsing as IPv6, so `2001:db8::1` & `::1`
  report `InvalidHost`. Checking for the colon in `HostForm::classify` also drops the IPv6 parse
  attempt from the domain path.
- Add an `exclude` list to `Cargo.toml`; the tarball ships `.github/`, `.idea/`, `.gitignore`,
  `ISSUES.md`, & `NOTES.md`.
- Mention `IPv4Address`, `IPv6Address`, `SocketAddressV4`, & `SocketAddressV6` in the README; the
  table only lists the six core types.
- Rename `is_valid_label_op_ignore_case` & `is_valid_name_op_ignore_case`; "op" reads as
  "operation".

## Parsing

- Guard the IP parse fns with is_ascii() + an unchecked conversion; the checked from_utf8
  costs up to 38%.

## Testing

- Test the width & precision handling of the `Display` impls; `EndpointRef` has a dedicated `pad`
  branch and `DomainRef` relies on `pad`, but `src/display/` has no tests.
- Test `ParseError`'s `Display` strings and `InvalidAddressError`'s `Display`, `into_value`, and
  `From` into `ParseError`; they are only exercised through `parse_unicode` under the `idna`
  feature.
- Add a nightly Miri job and `cargo fuzz` targets for the `parse` fns, plus a bench for the
  `is_ascii()` issue above; Miri passes the suite today.

# Future Work

- Add support for `no_std` + `alloc`.
- Add `idna` support to the `Host`, `Endpoint`, and `Authority` types.
- Add DNS support via implementing `std::net::ToSocketAddrs` as well as async support.
- Remove unsafe use `is_ascii()` in the `parse` fns. (blocked on rust#110998)