Adding support for bind attribute

Features like `?.` are nice when they abstract away a verbose way of dealing with null in simple code. In this case you have to deal with the nullity in two places so it's harder to understand.

The if/else version also reads better in your head as you read though the code. 

> if prototype.IncludedProperties is null, then use typeInfo.IncludedProperties, else then intersect..

```
if (parameterPrototype.IncludedProperties == null)
{
    parameterPrototype.IncludedProperties = typeInfo.Prototype.IncludedProperties;
}
else
{
    parameterPrototype.IncludedProperties = parameterPrototype.IncludedProperties.Intersect(typeInfo.Prototype.IncludedProperties, StringComparer.OrdinalIgnoreCase)
}
```