Expand header on first load and set minimum height

This uses sessionStorage, so the header is also expanded when a new tab
is opened.
The minimum height is unreliable in older browsers. It only works
reliably in browsers supporting the `calc()` property, which includes
all modern browsers. In other browsers, a fixed max height is used.