cpp: FormatWriter: Minor interface cleanups

- Use boost::optional in the same way as FormatReader
- Use set for unordered collections
- Remove getUnderlyingWriters
cpp: ome-xml: Add default construction of constrained numeric types

Required for the OME-XML model objects to default-construct
PositiveInteger, PositiveFloat etc. members.
cpp: test: Correct formatreader isThisType test
xsd-fu: C++ model objects use shared_from_this

Constructing new shared_ptrs from the this pointer is not
a good plan.
cpp: Add MetadataTools createID
cpp: Add FormatWriter implementation