Test coverage for building native binaries with no sources, and with java sources
Change defaults, namingScheme and output directory for binary flavors

- The single default flavor is overwritten by any explicitly added flavours in FlavorContainer
- When resolving, don't attempt to match on flavor if the target has a single flavor
- DefaultNativeBinary is now setup to handle multiple variant dimensions to some extent
    - Currently the only dimension is flavor
- DefaultNativeBinary generates names that include all variant dimensions, and output paths include variant dimensions
    - The exception is a variant dimension where only one possible value exists: these dimensions are collapsed
- Updated cpp/variants sample to use flavours