Make it possible to pass controller per tab definition.

This allows the metadata of a tab definition to pass `controller` property so tab pane may have a different controller
than the controller of the template the tab-panes component was called on.

Fixes #88