tab: break tab contents into header, content, and footer internal children

This makes it easier for us to transitiona way from the notebook tabs if
possible. We can use the header area for common shared widgets as well
as allowing tabs to place special content there.