Separate algorithm serialization from definition
Algorithm serialization test independence
Remove description implementations
Replace Token.passwordForCounter() with generatePassword()
Move validation into Token+Generation
Change Token.password() a property
Make updatedToken to a top-level function
Zero-length secrets are bad secrets, but not necessarily invalid
Refactor validation
Convert generation method to Swift
Remove OTPGeneratorAlgorithm shim
Consolidate generatePassword()
Named period parameter
Remove security key helpers