Support for toggling between horizontal/vertical tab placement

Added support for toggling between horizontal and vertical tab modes.
Currently it supports only left and top tab placements.

The current behaviour is as follows :

* Expands all the tabs when switching from vertical tab placement to
horizontal tab placement.
* Restores the tab hierarchy when switching back to vertical tab
placement.

Updated demo app to demonstrate the switching of tab placement.

Using HideableComponentWrapper

Using a custom JPanel to wrap a component which needs to be hidden but
still occupy the space.
Is the `if` check here necessary?
If it is only for optimisation, then I suggest you remove these.