Add game controller

AND refactor out dead-reckoning into its own package.