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, continue.

Moved keywords to happen before modifier parsing, as matching a keyword
will stop modifiers from being matched.

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, abstract to methods modifiers.

Added abstract to properties/events/delegates.

Also, removed instanceof.