PRE RELEASE:
* documentation
  * DONE: a minimal fuzzing example
  * DONE: cleaning up lint errors
  * DONE: comments on the actual api

* proper memory api (p1)
  * DONE: Process Memory Abstraction
  * DONE: Api that returns shared pages to process memory
  * DONE: Allow to not reset shared pages
  * DONE: Add testing
  * DONE: make a generic Reader/Writer implementation for virtual memory
Debug APIs:
  * DONE: Inject Mapping / Inject Code
  * DONE: Explore DS /BTS Branch Trace Storage via MSR_IA32_DEBUGCTLMSR
Better Memory management
  * TODO: integrate userfaultfd-backed snapshots for shared-root + EPT breakpoint coexistence
  * DONE: Reduce unnecessary memory by making root snapshot shared between VMs 
Loading VMs
  * DONE: fix add api to load dockerfiles directly
  * DONE: investigate mke2fs to turn docker image into fs image
  * DONE: fix api to load a rootdir based fs directly, rather than going through
    docker first

bugfixes:
* DONE: test and ensure SIMD instructions calculate correct memory accesses for ExitReason::BadMemoryAccess
* DONE: fix BTF Branch Based single step via MSR_IA32_DEBUGCTLMSR
* DONE: fix kvm dirty ring api to speed up snapshots
* DONE: fix host atomic bitmap to speed up snapshots
* DONE: fix nested virtualization
* DONE: fix console output by redirect serial into a ptty (serial_out_path now defaults to a PTY when unset)
* DONE: ensure snapshot reset fixes VM shutdown
* DONE: changing IP resets vm.continuation state as appropriate (set_regs now resets continuation)
* DONE: regs() and sregs() are cached during run loop
* DONE: speed up breakpoints by not enabling/disabling them ALL the time.
