Supporting more complicated child controller hierarchy

Previous code assumed that tabs are UINavigationControllers, this fix
supports any intermidiate controllers between a navigation and the tab
controller.
Hiding tab bar view to prevent it showing in rotation

When tar bar is merely moved down, it is visible during rotation.
Hiding and unhiding it guarantees it isn't visible in all cases.
Pass weak reference to animation blocks.