Overhaul Hook; don't report deadlocks in *_trylock

Hook has 8 user-defined hooks now.

Get rid of the va_list in favour of __builtin_apply() et al. There is no
'uptr' connected to a hook anymore.

Fix deadlock in hook_install where the 'pos' part of a hook id was
calculated using a break statement from list_for_each_safe(). This is
potentially a common pattern and needs clarification in the Documentation/.

The documentation stuff is deferred to when I can actually build modules
again. I'll try that out now.

Don't detect a deadlock in {mutex,read,write}_trylock. It may be helpful in
some cases but FWIW it's wrong in this function (and moreover causes
double-invocation of do_die() when an __*_exit function called in the dying
chain tries to lock a held mutex, to free a list or so, which is just what
should be prevented by this mechanism).