Check for valid build variant.

Otherwise error messages might be misleading.
Note: The code assumes the current "debug"/"release" dichotomy and will
have to be adapted once we allow users to provide their own build
variants.

Task-number: QBS-285
Change-Id: Ie972cdeaaad5d121f24e595217596e0bbaf34fd1
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Fix misleading messages when canceling operations.

The cause is not necessarily user intervention, but it is also possible
that building for one configuration was stopped because a different one
failed.

Task-number: QBS-285
Change-Id: I248eda778c9cc7effa596a1d264da37d0e8348d6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Centralize Info.plist/bundle handling code.

The differences in plist/bundle handling between OS X and iOS are
extremely minimal, so there is no reason to duplicate such a large block
of code between their respective module files.

As a side effect, this implements support for dictionaries and arrays
in OS X plists as well as the defaults handling that already existed
for iOS.

As an additional side effect, QBS-272 is no longer an issue.

Change-Id: I39be5681f4d4fba7369d55da720ff8130ff52cba
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>