Support for client-side compiles

This is a really difficult zone to be in, but support can be gradually built out. This PR also makes a breaking API change, replacing `precompile` with `compile`.