Custom PasscodeActivity should not be tied to the lifecycle of PasscodeManager

There are places and situations where we tear down PasscodeManager and reset it, such as logout or clean up, for instance. In the previous implementation, we would lose the custom PasscodeActivity, unless the app sets it again, which is hard for the app to do, since it doesn't know when the SDK tears down PasscodeManager. This patch ensures that the custom PasscodeActivity is always used, as long as setPasscodeActivity() is called right after the init() call.