Transition and Animation Improvements

Fixes animation race condition caused by quick transitions. Setting the _viewController ivar outside of the animation ensures the 'current' controller is always known, and the animation completion block compares controllers prior to erroneously removing the 'current' controller. Also improving animations in quick transitions by reversing the fade directionality. Fading-in the new view could leave all views nearly translucent during quick transitions, but fading-out the old view allows there to always be a new opaque view behind it.