xsd-fu: Extend C++ support

· Add GUARD property for include guards
· Add SOURCE_TYPE to distinguish between source and header output
· Source paths are relative to the output directory; this is to
  enable include guard generation
· Metadata output is a single target, rather than five separate
  targets