<commit_before><commit_msg>Notes - Add crate search<commit_after>Problem: Multiple crates with the same name can exist in one executable

E.g.
- `librustc` and `rustc`
- rustc/src/libnum and vendor/num/
- bitflags-0.7.0 and bitflags-0.8.2

When a crate's source specfies `extern crate foo;`,
- First `--extern foo=foo.hir` should be used (if present)
- A search should be performed of the search directories for the specified crate name
  - This might consider wildcard matches

Once the crate is located, that crate's unique specifier should be stored for if/when the referencer is referenced itself.



Cases:
- Loading from `extern crate` with `--extern`
  - Just use the specified path
- Loading from `extern crate` and searching
  - Search for a suitable crate
- Loading from a crate's extern list
  - Only use the specified crate

TODO: How should the unique specifier be determined/obtained when loading?
- It could just be the base filename (and do a path search for that exact filename)
  - Requires encoding the filename in the item paths.
- It could be extracted from the filename in a standard format.
  - Ties to the filename format
- It could be stored in the metadata
  - Disconnect between filename and tag, possible lookup errors?
  - Would require that the filename be exactly `lib<internalname>.hir` for external reference loading to work.
  - Could store the internal name _and_ the base filename in the crate metadata? (and error if an incompatible file is picked)

NOTE: The specifier should be present on the crate name used for internal lookups.
- This requires `load_crate` to return the specifier/unique name



Command line options:
`--extern` - Override the path for a named crate
`--crate-tag` - Specifies a string to append to the crate name (plus a `-`) during HIR lower
{'fraction_non_alphanumeric': 0.06218767351471405, 'fraction_numerical': 0.003331482509716824, 'mean_word_length': 3.857142857142857, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7018481', 'n_tokens_mistral': 497, 'n_tokens_neox': 473, 'n_words': 261}