Change krb5_createkey() to take a semi-optional list of keys.

This allows us to set keys during principal creation while preserving
the original MIT semantics that service principals start with kvno 2.
While it is suboptimal that we aren't starting with 1, 2 is certainly
better than 3.  We also provide an optimisation of generating only
rc4-hmac keys for the first passwd as the passwd.  As the passwd is
never used, it is a waste of CPU to generate multiple keys for it as
is done by default, we simply choose one enctype to generate and as it
turns out, rc4-hmac has the fastest string2key.  The performance of
krb5_createkey() improved by a factor of 4 while reducing CPU usage
by a factor of 50.

We also took the opportunity to clean up a couple of functions that
we touched.