"strict" weak aliases

Sometimes it is important that the type of an object matches the
type of its weak alias. See the attached patch that both adds a
type-safe __weak_alias() called __strict_weak_alias(), and fixes a buggy
__weak_alias() that __strict_weak_alias() would have caught during
compilation.
Thanks to Taylor R. Campbell for the incantation that was key
to making this work,
__unused static typeof(alias) *__weak_alias_##alias = &sym;
Does this look ok to commit?
Dave
--
David Young OJC Technologies
dyoung%ojctech.com@localhost Urbana, IL * (217) 344-0444 x24