add presenting view controller parameter

When authenticating, if there isn't a current session, the `UPPlatform` presents an `UPAuthViewController` on the key window's root view controller. This fails if another view is currently above the root view controller. (For example, if trying to authenticate from a modally presented view controller.) By allowing the caller to pass in a presenting view controller (and defaulting to the root view controller if nil) the UP SDK is more flexible and is easier to integrate with apps.

I've tried to make this change as minimal as possible. Yes, i had to add a crazy long method, but if you don't need to specify the presenting view controller, then the shorter methods are still available.

Let me know if you have any questions. I'd love to see this added.