Support attribute((alias()))

This is based on previous work by Szabolcs Nagy <nsz@port70.net>

Also rework multiple definition reporting in the process to correctly
catch the error cases where aliases are mixed with definitions.