Tabbed terminals

Elementary introduction of tabbed terminals.
I don't think we need dynamic loading. Usually, the app would start up with one active tab, which would get immediately loaded and displayed. If we at some point have a feature to autostart more than one tab, they should be started immediately since that's what the user asked for. If we remove a tab, the TerminalPage should get deleted too as a subordinate object. It just seems unnecessarily fiddly for a component with such a strictly defined always-on lifecycle.