Flatten "vm" dir and split signal handling out of vm::System

These are some of the changes I've made during my compiler rewrite.  I'd like to start merging non-breaking changes where possible, to avoid excess divergence.

I have three reasons for removing "vm" from header / source paths:
- It was inconsistent with the namespacing
- It was inconsistent between `include/vm/{system,heap,codegen}` and `{src/vm/system, src/{codegen,heap}}`
- In my branch I've started moving java-specific sources into src/jvm and include/jvm (so far, just compile.cpp and interpret.cpp), and it's a bit confusing to have both "vm" and "jvm"

For splitting out signal handling:
- It's one step toward reducing the godhood of System
- It removes the dependency of System on vmJump (on posix). This means we no longer need to link in the assembly code just to use System.

I'll note some small changes that are side-effects of how I'm doing the refactoring:
- In the couple places where I abort in SignalRegistrar, these are "real" aborts instead of calls to System::abort.  Correct me if I'm wrong, but I don't think that anyone is actually using the ability to implement System::abort differently (say, with a longjmp).  Doing so would currently require either exposing MySystem from windows.cpp and posix.cpp to embedders, or having embedders completely re-implement them.  Also, I can't imagine ever hitting those particular aborts in production.
- The crash dump directory is set & handlers are registered slightly later, so theoretically we could have crashes that would have gotten dumped before but won't be now.

I've tested this with most of the following matrices, with at least one test in each dimension:
- {darwin,linux}: `make mode={fast,debug} process={compile,interpret} arch=x86_64 test`
- windows: `make mode={fast,debug} process={compile,interpret} arch={x86_64,i386} test`