Implement IDisposable in the EngineController since a Process needs to be disposed of.  Hold onto the chess engine process in the controller instead of returning it to the UCI since the controller will be communicating with the engine.