Eventually, I'll want to have the byte-knight engine available as a self contained library. This means the UCI loop should really be part of the CLI component of byte-knight and not intrinsic to the engine itself. This will result in more code duplication as we implement functions to handle each command, but it will also result in better separation of concerns.