ELY-5 bis

This incorporates a slightly cleaned up version of pull #5 as well as a refactor to move the password string parsing facilities out into a separate utilities class, unifying all parsing/generating of crypt strings.