Added optional serialization based on ShouldSerialize{V}.

Xml SerializationCodeGenerator and XmlSerializationWriterInterpreter will no longer serialize an attribute named {V} if its object has a method named ShouldSerialize{V}() that returns false.
{V}Specified now is also checked to be true before serializating the attribute even if it is a property that is not settable.
**Fixes** [#1852](https://bugzilla.xamarin.com/show_bug.cgi?id=1852).
I don't think being abstract is a problem. When serializing we'll have a real instance, which will have an implementation for this method.