cpp: compat: Add C++98/boost std::owner_less fallback

The following implementations are supported:

- C++11 std::owner_less
- Boost boost::owner_less (newer Boost versions aligned with C++11)
- Our fallback reimplementation (older Boost versions)
xsd-fu: Use multi-index for C++ reference lists

boost::multi_index_container is used to index elements by both
index number (insertion order) and value (pointer location).
This allows access by index and fast lookup without the need
for an O(n) list traversal.

This is similar to the Java ReferenceList but does not implement
a container in its own right; it's just a specialisation of an
existing multi-indexing container implementation as a typedef.
The code generator has been updated to emit the new container
types in place of std::vector, and the C++ code templates
adjusted to use them for fast lookups.
Review setId() Javadocs for readers/writers

- expand description of setId() for the FormatReader/FormatWriter interfaces
- properly link to the interface setId Javadoc for classes overriding setId()
xsd-fu: Only use multi-index for references
Merge pull request #1484 from sbesson/javadocs_setid

Review setId() Javadocs for readers/writers
Merge pull request #1482 from rleigh-dundee/cpp-model-reference-list

xsd-fu: Use multi-index for C++ reference lists