Deferring persistence of passcode config.

Previously, passcode configuration data was persisted in the keychain prior to going through the passcode creation or update process.  For the sake of data consistency, these values should not be set until they've been validated by means of a successful passcode creation or update.
There were circular dependency issues between `SFAbstractPasscodeViewController` and `SFSecurityLockout`.  So I broke this out into its own header file.