TextualUI classes implemented

SparseTextualUI also. Players now have references to the UIs instead of
being passed them each turn.