refactor(tabs): adds support for non-fixed tabs

Closes #825.
Closes #460.
Could we actually change this to `shouldStretchTabs()`? The name `stretchTabs()` sounds like you're commanding it to do something, when in reality it's just returning a boolean.