The files were moved to be a little bit nicer directory-structure wise.
Errors are now thrown via exceptions. I initially wanted to do
no-exceptions, but doing so will be kind of annoying with third party
libraries and in general, so the shift to exceptions is a Good Thing.
Error is.. well, an error. Unlike std::error_code, or etc, we use a
string so that code can attach its own context. It's not perfect, but
it's better than error categories, and that's good enough.
A early idea for the api of kvm::VM is provided, but I'm not attached to
it.