Ruby implementation of chess featuring error handling and polymorphism, good UI