Über Binding PartI : Adding support for property level binding using IBinderMetadata

Yeah, i agree, will try to add some more comments here (although it is a hard problem to explain).

basically since the PropertyInformation object gets created when a TypeInfo is being created in case of nested types like so
```c#
public class Person
{
         public Person Parent { get; set; }
}
```
In the above scenario if you request metadata for Parent propety, it will first create the type info for Person which will in turn create PropertyInfo for parent
and then using the Property Info for Parent create property metadata.

Now if we had code like 
```c#
 if (propertyInfo.Prototype != null)
 {
          var typeInfo = GetTypeInformation(propertyInfo.Prototype.ModelType);
          metadata.BinderMetadata = typeInfo.Prototype.BinderMetadata;
 }
```
inside ```CreatePropertyInfo```
``` var typeInfo = GetTypeInformation(propertyInfo.Prototype.ModelType);``` would again try to get TypeInfo for type Parent  which will again call CreatePropertyInfo for propertyParent and hence would recurse.