Update glossary to clarify rule-related terminology
Update glossary to clarify rule-related terminology

- Rewrite "artifact" and "tree artifact" a little
- Rewrite "aspect-on-aspect" a little
- Add entry for "attribute"
- Flesh out "provider" a little bit, especially to distinguish between providers and provider instances
- Rewrite "rule". Emphasize its behavior from a BUILD author's perspective rather than starting with a brain-dump of the jargon a rule author needs to know. Include a brief description of its interaction with the three build phases, since rules are *the* central concept in Bazel. Add sheepish note that rules and and rule targets are sometimes conflated.
- Add separate entry for "rule target". We commonly use this term in other documentation, and a user might be confused whether we're talking about a "rule" or a "target".
- Rewrite "target" to emphasize its role in the build graph and prioritize discussion of rule targets and file targets.

Follow-up work will restructure the information in visibility.md, and add content for .bzl visibility.

Work toward #11261.

PiperOrigin-RevId: 481238358
Change-Id: I728e1be134e1619e1f3710328a111c45c06732e0

bazelbuild/bazel,katre/bazel,cushon/bazel,katre/bazel,cushon/bazel,cushon/bazel,cushon/bazel,bazelbuild/bazel,bazelbuild/bazel,cushon/bazel,bazelbuild/bazel,cushon/bazel,katre/bazel,katre/bazel,bazelbuild/bazel,bazelbuild/bazel,katre/bazel,katre/bazel