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.
Yeah I think static * is okay, and the reason is that all the definitions that would be imported are always found within one source file.  In addition, the static members of interfaces tend to be more limited than those of classes.