web/client: Add header and footer

Also make value cache be per board value, not per parent, so that we
can know the correct header text immediately due to the last move's
search.  This also makes half move values show up immediately.