Bug 1100945: adding a PasscodeHelper

This should do as an initial draft.
Looking forward to any kinds of feedback, especially lines 70-73 and 88-100. :)
I think `storedPromise` is confused, especially the `values` doesn't reveals what it stores. The name seems too general. Or, at least we should have a comment here.