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.
Yes they were just for optimisation, will remove them.