Command sending+response reading is now synchronized. This allows
bochs to properly initialize both mouse and keyboard simultaneously.
Also status register is checked EVERY time read/write to other IO
ports is performed.
We don't store the error message anymore in BAN::Error.
Instead we store a error code that can be mapped into a string.
This allows BAN::Error to only take 4 bytes instead of 128.
We should also make some kernel initialization just panic instead
of returning errors since they are required for succesfull boot
anyway.