value property for ExtendedProperties

Normal properties' text can be accessed through the .value property
For Extended Properties we need to look into the inner field -
which is now renamed as .val (from the earlier confusing .value)
Initialise ExtendedProperty.value before super is called
Clients can specify additional properites to be fetched.
new method write_to_xml_get() and some refactoring

When we are trying to fetch some properties the XML needs to
look different. So restructure the write_to_xml stuff to make
it easier to do so.
New methods item.add_named_int_property and add_named_str_property

These functions make it easier to add the differnt types of
eXtended properties to an Item. They can be initialised from an
XML element ("read") or from actual values (in prepfor a "write")