RFC - compiler refactoring - spans

What I didn’t do yet:

  • I’m not sure it’s still reasonable to get rid of ctxt (previously expn_id) in spans and move its data to codemap, because now it contains hygiene information in addition to macro expansion data.
  • span.lo is very non-optimal, it’s a huge offset in a codemap including all files in the crate. If the file itself is tiny it still can get huge offset and avoid inlining. If something like file_local_offset + file_id was used instead, it would radically reduced number of bits required to represent base, which is currently the most space-demanding component of inlined spans. (I’d expect 24-bit spans to become usable or percentage of spans representable with 32 bits to jump into 90%s).