Add Perl module for console related code.

- Move prompt_* methods to this module.
- Add methods for printing errors and warnings easily.
- Add colour code helpers and switch all code to use them.
Miscellaneous improvements to configure.

- Clean up various minor sections of the code.
- Remove OpenSSL and GnuTLS detection plumbing.
  - This will soon be the job of modulemanager.
  - This did not work in non-interactive mode unlike --enable-extras.
- Rework runas user handling.
  - Add the --gid configure option.
  - Accept either an id or a name in --gid and --uid.
- Rework the question flow in interactive mode.
  - User is no longer asked detailed questions unless they want them.
  - Socket engine questions have been removed.
- Automatically enable non-interactive mode if STDIN or STDOUT are not
  a tty.
Improve configure cache file handling.

- Add a version number to the configure cache file.
- Disable configure cache file in non-interactive mode.
- Rename configure cache file to .configure.cache to avoid 2.0 files.
- Use run_test to produce the "reading .configure.cache" message.
Improve build system compiler detection.

- Check the CXX environment variable inside find_compiler instead
  of doing it separately.
- Use a test file instead of checking for version output. This
  ensures we are using a working compiler.
- Pipe the output through run_test which makes debugging problems
  considerably easier.
- Detect Xcode versions of Clang properly by returning the LLVM
  version number instead of the Xcode one.
Implement support for distribution specific version labels.

This will help us determine whether a version has been packaged by
a downstream distribution who quite often make arbitrary changes
which are a pain to provide support for.

Debian, we're looking at you.
Move common code to make::common from make::utilities.

The other code in that file will be removed very soon so it has
been left alone to avoid merge conflicts.

This will help prevent insp20 merge conflicts in the future.
Fix warnings in m_ssl_openssl about the use of `long long` on C++03.
Fix builds on OpenBSD spamming the console with warnings.
Merge pull request #895 from SaberUK/master+configure-misc-cleanup

Various improvements to the build system.
Add support for extra modules and custom compilers to test-build.
Merge pull request #941 from SaberUK/master+test-build

Add support for extra modules and custom compilers to test-build.
Link m_ldap against libldap_r
Check whether Class::Struct is available on Jenkins' Perl.