mk: Bundle jemalloc with make dist

The dist tarball doesn't depend on git, so all git submodules must be included
inside of it.
mark rust_malloc/rust_free as unsafe

Support for this was added by 08237cad8d2ce9287aedf99e57384407cc9dc42d.
heap: add a way to print allocator statistics
heap: replace `exchange_free` with `deallocate`

The `std::rt::heap` API is Rust's global allocator, so there's no need
to have this as a separate API.
make sure jemalloc valgrind support is enabled

This requires pointing it at the valgrind headers we carry in-tree.
auto merge of #14119 : thestinger/rust/heap, r=cmr
Add `stat` method to `std::io::fs::File` to stat without a Path.

The `FileStat` struct contained a `path` field, which was filled by the
`stat` and `lstat` function. Since this field isn't in fact returned by
the operating system (it was copied from the paths passed to the
functions) it was removed, as in the `fstat` case we aren't working with
a `Path`, but directly with a fd.

If your code used the `path` field of `FileStat` you will now have to
manually store the path passed to `stat` along with the returned struct.

[breaking-change]
frantically kick the buildbot