Use Bash -e shell option instead of many exits

The result is the same, but this removes unnecessary code and avoids
forgetting to add an exit command to a line.
Prevent failure with old versions of losetup
Fix check for losetup version

Before, the test always evaluated to true and kpartx was used. Now, the
test actually depends on the value of `losetup_lt_2_22`.
Force authentication for cdebootstrap-static

Before, during initial bootstrapping, cdebootstrap-static ignored "the
unavailability of Release.gpg, missing keyrings, broken signatures, and
missing gpgv executable". This commit adds the necessary dependencies
to be able to perform the verifications. Following this commit, the
signatures/checksums on the Release file and all packages are properly
checked.
Improved code for setting the date.

In the old situation there was 1 try to set the date and if it failed,
most files had 1970-01-01 as date. Not ideal, but not fatal either.
But when using GnuPG the date becomes more important, so now there are
several tries to set the date correctly.
Add verification for downloads of update.sh

Before, during the build process, packages were downloaded over http
without authentication. Now, the Release file and packages are properly
verified. If verification fails, a warning will be presented to the
user with the option to ignore it.

Note that in order to perform GPG verification of the Release file, the
user must have the Raspbian signing key in their keyring. The key can
be obtained from public keyservers (0x9165938D90FDDD2E) or from
https://archive.raspbian.org/raspbian.public.key.
Use Release file to check available extensions
Download and verify GPG keys in update.sh

This also switches from using the user's personal keyring to using a
temporary keyring for `update.sh` and fingerprints hardcoded in
`update.sh`.
Include raspberrypi.org GPG key in installer image

Before, the key was being downloaded insecurely with wget during
installation without verification. Now, the key that was downloaded and
verified by `update.sh` is included in the installer image so that it
doesn't need to be downloaded at install time.
Refine user interface of update.sh

Before, the output was very verbose, particularly with wget downloads.
Now, much less output is generated so that it is easier to monitor.
Additionally, added confirmation messages for successful verifications
and changed verification problems from warnings to errors.
Provide message if not all packages found in list

Before, `update.sh` would exit without any messages if not all required
packages were found in the package lists. Now, it tells the user what
went wrong.