C# userdiff patterns update

New keywords: foreach, break, in, try, finally, as, is, typeof, var,
 * default, fixed, checked, unchecked, this, lock, readonly, unsafe,
 * ref, out, base, null, delegate.

The reasoning behind adding unsafe to keywords is being also a
statement that can happen inline in code to mention blocks which are
unsafe. Also, delegates are not necessarily declared in class bodies,
but can also happen inline in other functions.

Added parsing of events and delegates, which are like properties, but
take an extra keyword.

Added extern to methods modifiers.