This is a library for managing targets for compilers and related tools.

Currently, the main feature is support for decoding "triples", which
are strings that identify a particular target configuration. They're named
"triples" because historically they contained three fields, though over time
they've added additional fields. This library provides a `Triple` struct
containing enums for each of fields of a triple. `Triple` implements
`FromStr` and `fmt::Display` so it can be converted to and from the
conventional string representation of a triple.

`Triple` also has functions for querying a triple's endianness,
pointer bit width, and binary format.

And, `Triple` and the enum types have `host()` constructors, for targeting
the host.

It supports all triples currently used by rustc and rustup.

It does not support reading JSON target files itself. To use it with a JSON
target file, construct a `Triple` using the value of the "llvm-target" field.
