Fix corlib self referencing bug.
In mcs/class/corlib/System.Reflection.Emit:
* TypeBuilder.cs (DefineDefaultConstructor): If the resolved
type is either typeof (object) or typeof (ValueType) we backout
to the non resolved type as it might be one of the corlib's
typebuilders.
In mcs/mcs:
* rootcontext.cs (CloseTypes): Only apply the enum hack for
corlib here.
* rootcontext.cs (EmitCode): Do the corlib basic type hack
here before types are emitted. This is required since EmitType
produce type initializers, which derive from ValueType and must
be able to see the TypeBuilder version of it.