/*
 * call-seq:
 *    User.new
 *    User.new{ |user| ... }
 *
 * Creates and returns a User object, which encapsulates the information
 * typically found within an /etc/passwd entry, i.e. a struct passwd.
 *
 * If a block is provided, yields the object back to the block.
 */
static VALUE user_init(VALUE self){