Fix direct invocation to +rateApp wich fails in iOS 8

On iOS 8, the `+rateApp` function can fail when `openInAppStore = NO` because `+getRootViewController` maybe unable to effectively traverse the `UIView` hierarchy. (iOS 8 may introduce an extra `UITransitionView`)

The fix introduces a recursive deep search for the `+topMostViewController`, no longer assuming that it will be found at the root level of `[window subviews]`.

Fix applies to previous versions of iOS with no ill effect.