DescriptionFile: create device elements if they do not exists

set_device_element() may be called with names of elements that do not
exists yet (non-required elements that are empty by default).

Create elements dynamically in set_device_element(). also, set dlna
namespace for X_DLNACAP and remove the X_DLNACAP element if the
contents are empty.

https://bugzilla.gnome.org/show_bug.cgi?id=703044
xml templates: fix element order to match UDA 1.1

UPnP Device Architecture 1.1:
"The order of XML elements in device and service description documents
MUST adhere to the order as defined in the corresponding specification"

Note that this commit is not enough for compliance: when we dynamically
add optional elements, we must make sure they appear in the correct
place.

https://bugzilla.gnome.org/show_bug.cgi?id=702451
DescriptionFile: Preserve order when adding elements

UPnP Device Architecture 1.1 specifies the order of elements
in the device description. Preserve that order when dynamically
adding elements.

https://bugzilla.gnome.org/show_bug.cgi?id=702451
Only modify the description file from DescriptionFile

RootDeviceFactory used to modify the description xml directly. This is
not optimal as DescriptionFile now keeps the elements in the correct
order.

Move the icon element and service element creation code to
DescriptionFile, start using DescriptionFile public methods to modify
the description from RootDeviceFactory. Swap the order of ControlURL
and EventSubURL elements to match the specification.

https://bugzilla.gnome.org/show_bug.cgi?id=702451
RootDeviceFactory: use UUID.get() from UUID.vapi

https://bugzilla.gnome.org/show_bug.cgi?id=702451