Issue 10875 - Introduce LinkageType enum for safer string comparisons.

http://d.puremagic.com/issues/show_bug.cgi?id=10875

Note that this doesn't break existing code even though the actual type was changed. Well, it /shouldn't/, but if there are any reports of a regression we can turn it back into a string. In that case it will still work with the new `LinkageType` since these string<=>enum conversions are implicit when the template is called.