Developer documentation for Simon Tatham's puzzle collection

This is a guide to the internal structure of Simon Tatham's Portable Puzzle Collection (henceforth referred to simply as ‘Puzzles’), for use by anyone attempting to implement a new puzzle or port to a new platform.

This guide is believed correct as of r6190. Hopefully it will be updated along with the code in future, but if not, I've at least left this version number in here so you can figure out what's changed by tracking commit comments from there onwards.