///
/// \page kind_page_front Kind : Extensible Categorization
/// \if ( PIXAR_MFB_BUILD )
///   \mainpage Kind : Extensible Categorization
/// \endif
/// \anchor mainpage_kind
///
/// The Kind library provides a runtime-extensible taxonomy known as "kinds".
///
/// Kinds are just TfToken symbols, but the KindRegistry allows
/// for organizing kinds into taxonomies of related/refined concepts,
/// and the KindRegistry::GetBaseKind() and KindRegistry::IsA() queries
/// enable reasoning about the hierarchy and classifying objects by kind.
///
/// Kinds are useful for classifying scenegraph objects, such as by tagging
/// objects representing the roots of models with the kind of model it
/// represents; it is scenegraph taxonomy that motivates the "builtin"
/// kind hierarchy.
///
/// \section kind_coreKinds The Core Kind Hierarchy
///
/// The KindRegistry begins its life pre-loaded with the following hierarchy
/// of kinds that define our concept of "model hierarchy", which is so
/// central to our organization and discovery of scene description.  Of course,
/// as described in the next section, unlimited new, entirely unrelated
/// taxonomies can be created by extension.
/// <ul>
/// <li><b>model</b> - Everything in the model hierarchy is a kind of model.</li>
///   <ul>
///   <li><b>component</b> - A component model is a terminal model in the model
///                          hierarchy - it can have no child models.</li>
///   <li><b>group</b> - a model that is simply a container for other models.</li>
///     <ul>
///     <li><b>assembly</b> - An "important" group model - often because it is
///                           itself a published asset.</li>
///     </ul>
///   </ul>
/// <li><b>subcomponent</b> - Within a component model, subcomponents identify
///                           important (generally articulable) sub-trees.
///                           Subcomponents are "stopping points" when
///                           dynamically unrolling/expanding a component.</li>
/// </ul>
///
/// \section kind_extensions Extending the KindRegistry
///
/// The kind registry can be \em extended using the facilities provided by
/// PlugRegistry, by adding a 'Kinds' sub-dictionary to the \em plugInfo.json
/// file of any module within your "pixar-base aware" build environment.
/// The dictionary entries will look like the following:
/// \code{.json}
/// "Info": {
///     "Kinds": {
///         "chargroup": {
///             "baseKind": "assembly",
///             "description": "A chargroup is an assembly comprised of a single character plus some associated models -- typically hair, garments, and charprops."
///         },
///         "charprop": {
///             "baseKind": "component"
///         },
///         "newRootKind": {
///         }
///     }
/// }
/// \endcode
/// \note One cannot alter core kinds or their place in the hierarchy or any
/// other data associated with them by attempting to override them in the
/// extension file.  Attempting to do so will result in a registration error.
