build: default to using -O2 for release builds

The -O3 optimization level can often lead to dangerous (and sometimes
incorrect) optimizations being performed.  So let's use a level that's
more stable.
build: don't download and extract tarball if source is already present

When building under Homebrew, we want to let Homebrew manage
downloading and extracting the tarballs. See PR #1411.

Also make sure to skip only if directory is not empty. Fix #1433.
Merge pull request #1434 from xu-cheng/fix-1433

DownloadAndExtractFile.cmake: only skip if directory is not empty.
Merge pull request #1426 from jszakmeister/change-release-opt-default

build: default to using -O2 for release builds
CMake: Set custom RelWithDebInfo compile flags.
build: fix the usage of DESTDIR in InstallHelpers.cmake

It turns out that `file(INSTALL ...)` already accounts for `DESTDIR`, so
this wasn't creating the directory structure in the correct location.
Instead, we need to do our existence check with `DESTDIR`, but leave it
off when doing the install step.

While we're at it, add a check to make sure `ENV{DESTDIR}` is not being
used with a relative path, as that construct doesn't make much sense.

This fixes issue #1387 discovered while trying to make helptag
generation work correctly in #1381.
Merge pull request #1383 from fwalch/nvim-buildtype

CMake: Set custom RelWithDebInfo compile flags.
Merge pull request #1400 from jszakmeister/install-helpers-destdir

build: fix the usage of DESTDIR in InstallHelpers.cmake
version: Add compilation info.