Add gds_accounts module and configure user permissions

This pull request:

- Adds the `gds_accounts` and `base::packages` classes to Hiera, ready for
  autoloading as we are using Hiera as a lightweight ENC in this repository

- Adds two groups to `gds_accounts` in order that named users have the ability
  to access the machine via SSH and administer it. Belonging to the correct
  groups is a prerequisite to allow this to happen.

- Adds named users using `gds_accounts`, specifying username, comment (full
  name) and public SSH key. These values are consistent across all
  repositories making use of the `gds_accounts` module.

- Adds a specific `govuk_backup` user using `gds_accounts`, specifying a comment
  for easy identification at a later stage, a default shell (rssh, in order to
  restrict the permissions the user has to run programs, a `true` boolean value as
  the value for the `create_group` key in order to both ensure that the user
  does not get automatically added to a primary group with permissions above the
  level it should have, and to ensure that the user is jailboxed within its own
  `govuk_backup` group, and an empty array for the value of the `groups` key in
  order to ensure the user is not added to any secondary groups.

---

One part of the default `gds_accounts` behaviour is to purge accounts that exist
on the machine but do not exist in the related Hiera array. When testing changes
against this repository in Vagrant, the default user is `hiera`. Puppet will attempt
to clean this user out, and fail as the user is already logged in (as part of
the VM build-out procedure). We could add this user to the Hiera array, but that
would give the user permissions which is not a sensible thing to do from a security
standpoint. Instead, it is wise to ignore the existence of the user when the machine is
brought up in a development environment. This commit adds the user to a
`purge_ignore` array in Hiera which is only used when the machine is brought up in
Vagrant, as Vagrant identifies itself as a development environment. Changes to this
repository to support this work will appear in a separate pull request, and will be
referenced in this pull request's comments.