fix some misleading error messages

The misleading message that dropped submodule paths.
racket/runtime-path: add `runtime-require`

The `runtime-require` form is especially useful for ensuring
that a submodule will be pulled along with its enclosing module.
raco exe: fix problem with dynamically resolved relative submodules
move raco exe tests to the `compiler-test` package

Also, enable the `raco exe` tests for DrDr
serializable-struct, etc.: export deserialization info in submodule

This change is slightly incompatible, because `serializable-struct`,
`define-serializable-struct`, and `define-serializable-class` no
longer `provide` and identifier that they used to. Instead, the identifier
is provided by a `deserialize-info` submodule.

The deserializer looks for a `deserialize-info` submodule, and then
falls back to using a module if the submodule is not available.