idmap_add failure case (found by Ted Unangst via Colin Percival)
also convert idmap_hashf to return void, since it can't fail
also change some panics to error returns
1. Use C99-style variable argument macros rather than GNU ones.
2. Don't cast id to ident_t. Its type is already ident_t and casting to
a union type is a constraint violation.
Submitted by: Stefan Farfeleder <stefan@fafoe.narf.at>