Fix incompatibility with .NET's serialization of ObservableCollection

...part of bug 11294

Reentrant renamed to SimpleMonitor as used by .NET
Variables such as count to _busyCount to match .NET
Add field:NonSerializedAttribute() to variables not required for serialization
Use TypeForwardedFrom information when creating serialized Assembly object 
Match changes in ObjectWriter.cs to CodeGenerator.cs