drop non-relative paths in procedure source locations

A path that is not relative to the enclosing file can show up
due to cross-module inlining. Package-based modules do not have
a good relative path to "collects", which creates trouble for
distributing compiled modules where, say, `map' was inlined.

It might be possible to keep the path in module-path-index form
so that a path can be constructed appropriately at run time, but
it's much simpler to just punt on function source locations in
this relatively rare case.
pkg/path: add `path->pkg+subpath+collect'

I was going to use this extension to implement `path->module-path',
but it turns out that `path->module-path' already exists and in
a form that works with packages. Still, this extension might be
useful in the future.
add some tests for `path-module-path'
Typed Racket: reference `#%type-decl' through a module path index

Avoid problems with absolute paths and bytecode files.
misc changes to avoid absolute paths in bytecode files

In many cases, `path->collects-relative' is used instead of
`path->main-collects-relative' to generalize existing support
for collection-relative paths.