add GPL notices
add initial programmer's guide doc
refactor: move data and definitions from main into new api files
remove date arg to allow title page date to auto-update