Add TabView for use with the TabbedPage component

This provides an easy component for representing tabs and transitioning
between them. It provides the following features:

- Non-interactive (interaction provided by TabbedPage)
- Automatic clipping
- Automatic snapping
- Default to horizontal orientation
- Ubuntu-provided transition duration
Improve styling and usability of TabbedPage

- Use orange underline instead of directly coloring the text
- Make the tabbar slightly higher for easier tapping
- Better spacing between tab titles
Fix errors thrown when columns == 0

When columns is zero, the column flow was throwing errors because it was
trying to layout rows under the first row when the first row was empty

- Skip layout if columns == 0
- Remove some debug statements
Merge upstream changes