Refactor NSIS scripts

- Makes it easier to maintain
- packaging script must remove unwanted files before running
- refactor a bit to put repeatedly used code into macros.
packaging script improvements:

- More finally blocks on try statements: should leave the repo in a
  cleaner state if the build is aborted/fails
- line wrapping
- During installer creation, non-repo files are relocated to a temp
  directory, then restored after (not necessary for archive versions,
  since those use list files)
- clean up build.log writing
- new option to disable relocating files
- If modified zipextimporter is not installed, will prompt to attempt
  to install it (will fail if Python is in Program Files).
- Includes `Mopy\Apps` in the distributables (it cannot be added
  to the repo, so a workaround was needed)