Add better structure, some basic styling

The main focus of this commit is to pull the router code into router.js
and to add a component to represent the nav, to DRY up the stuff we're
about to add.