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.
No we need not maintain the state. And as of now we are just using it once. So we can create an instance when required and use it.