CPackWIX: Handle CPACK_PACKAGE_EXECUTABLES (#13967)

Add start menu items including an uninstall shortcut.  Add variable
CPACK_WIX_PROGRAM_MENU_FOLDER to configure folder name.
CPackWIX: Fix MSI package layout regression from parent

The parent commit added a regression where if the install directory had:

  parent
    child A
    child B

the produced MSI would install:

  parent
    child A
       child B
CPackWIX: Handle multiple shortcuts in the start menu
CPackWIX: Add option to specify the language(s) of the installer

Add option "CPACK_WIX_CULTURES".
CMakeCPack: Provide an upgrade guid for WiX

Set CPACK_WIX_UPGRADE_GUID.  Without this upgrade GUID, you end up with
multiple instances of the same installation when installing cmake from a
WIX generated installer.
CPackWIX: Add support for custom WiX templates

WiX provides a lot of functionality for installers that cannot be
supported (easily) in the default WIX.template.in file.

For most users, the default template should be fine.  However if users
want to produce merge modules, include custom actions, etc, this new
option allows for a hook into how the wxs is produced.
Merge topic 'cpack-wix' into next

9f5108f CPackWIX: Add support for custom WiX templates
bb68011 CMakeCPack: Provide an upgrade guid for WiX
9d11f6d CPackWIX: Add option to specify the language(s) of the installer
5911453 CPackWIX: Handle multiple shortcuts in the start menu
6d77e1a CPackWIX: Fix MSI package layout regression from parent
8c0e325 CPackWIX: Handle CPACK_PACKAGE_EXECUTABLES (#13967)