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).
 This is not very readable, try to split it and use string.Format