dev: don't barf if .git is missing

Ensure die() is defined before calling it, by loading build_lib.sh
earlier.
dev: factor out duplicated rcov invocation
dev: fix run-unit-tests to work with simplecov
dev: add run-tests and run-BDD-tests subcommands

The run-unit-tests subcommand was a misnomer, because it also
ran BDD tests.  Now the names reflect the actions accurately,
and it's also possible to run only unit tests, or only BDD tests.
doc/devguide/testing/devtool.md: improve Ubuntu instructions
dev: deprecate {setup,reload,clear}-unit-tests in favour of ./dev tests

These commands were also misnamed, because they relate to the
whole test environment, not just unit tests.

  ./dev setup-unit-tests  - superceded by ./dev tests setup
  ./dev run-tests         - superceded by ./dev tests run
  ./dev run-unit-tests    - superceded by ./dev tests run-units
  ./dev run-BDD-tests     - superceded by ./dev tests run-BDD
  ./dev reload-unit-tests - superceded by ./dev tests reload
  ./dev clear-unit-tests  - superceded by ./dev tests clear
dev: fix CI typos
dev: make ci and pull-requests subcommands more helpful
dev: fix setup-test-env subcommand option handling

- remove final remnants of old setup-unit-tests --offline option
- add missing documentation for --no-gem-cache
dev: fix syntax error in run_unit_tests()
dev: avoid an error if chef/cookbooks/README is missing
dev: remove misleading reference to rcov when running Chef specs
doc/devguide/testing/devtool.md: add openSUSE instructions
doc: move CLA information into a separate page
doc: add new contributor's guide page
move dev-setup/ docs to doc/devguide/
doc/devguide/barclamps: fix typo and tweak wording
doc/devguide: add technical topics to index
doc/devguide/testing: much refactoring and editing

- improve wording
- add links
- new BDD and web UI pages
- remove duplicate information

and more ...
dev: tidy up handling of test environment prerequisites

- Move all handling of test environment dependencies into a single function
- Rename that function to test_prereqs_installed()
- Fix DRY violations by removing gem dependencies from ./dev and
  dev-setup/Gemfile and always using bundler to install them via the
  existing Gemfile.  This reduces the chance of us missing a gem during
  testing due to the minimal Gemfile previously used being too minimal.
  The downside is that the first run of travis-ci/update-git.sh on
  any machine will be slow due to all the gems needing to be installed.
- Remove pointless 'f' temporary variable