Fix CodeDom so that invalid keyword identifiers are corrected

See https://bugzilla.xamarin.com/show_bug.cgi?id=17658

The current mechanism is to use an ‘_’ prefixed to the id, we could
change this to \`\` identifier \`\` if we wished, although this would require
regression testing all other uses of the (-!) function.