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.