Respect YamlIgnore on deserialization

YamlIgnore was previously respected only on serialization. Now, properties marked with YamlIgnore are treated as non-existing for the purposes of deserialization as well.

Important: If a YAML file contains a property, but in the C# object the corresponding object is marked with YamlIgnore, this will lead to an exception. I think this is the correct behavior (just like as if the property didn't exist), but silently discarding the value could also be a possibility (which I think is bad and error-prone)