Initial code commit. 


Began working on this when the Saturday paper was released. Got
it working quickly with my game then began generalising it. Exams got in
the way. Finished yesterday.