Few Big Files => Many Small Files

Much tinkering focused on moving from a few large files
to many small files, by pulling each class out into its own
headers and implementations.