(maint) Move Find*.cmake to a `cmake` directory

Local cmake code is typically stored in a directory named
`cmake`. Vendor should be kept to the single purpose of holding
3rd-party libraries.
(maint) Do not use CMake's ExternalProject for vendored stuff

ExternalProject is great when vendoring a library with complex build
requirements, but it has some drawbacks. Specifically, it will ignore
the toolchain file that we use to make CMake find our special compiler
and library builds.

This commit removes ExternalProject, and instead embeds the vendored
libraries as part of the normal CMake build process. For rapidjson
this means pretty much nothing, since it is header-only. For gmock a
minimal CMakeLists.txt is added to build the gmock library and set
some variables for us.

The vendored versions of gmock and rapidjson in this commit are
stripped-down, since both contain a bunch of random stuff that isn't
needed for our build process.
(maint) Use CMake's REQUIRED flag on required dependencies

Previously, we were manually enforcing that some libraries were
required. This commit uses CMake's inbuilt facilities for doing this.
(maint) Move `lib` subdirectory add to top-level cmake

Previously, the `lib` dir was added from the exe CMake. This is not
idiomatic (add_subdirectory should be used only for true
subdirectories), but also gives a structural impression of "We are
building an executable that contains a library". Moving the `lib`
subdir add to the top-level gives the more accurate "We are building a
library and an executable (which happens to use our library)"
(maint) deduplicate CFLAGS
(maint) Remove dependency on rapidjson from lib.

Recently we removed rapidjson as an external project dependency and
instead have unpacked it in the vendor directory.

As a result, the lib project should no longer have a dependency on
rapidjson, which is header-only.

This fixes a warning in CMake 3.0.
(maint) update packaging
and more changes
other deps