CA-135187: Filter out restricted device_config keys

A commit fixing SCTX-1616 now causes PBD create to throw an error if given
a device_config with the SRmaster key in (internal use only).

However, if this happened to exist from a time when this was not forbidden then
pool join will fail since the slave uses the device_config from the master's
PBD record which might contain this key.

This commit filters this key out in the pool join code-path.

Signed-off-by: Si Beaumont <simon.beaumont@citrix.com>
CA-135189: Remove restricted device_config on upgrade

The SRmaster key is restricted for internal use only. There are precautions
taken against creating PBDs with such a key in the device config now but we
should purge the database of any such keys created before these measures were
in place.

Signed-off-by: Si Beaumont <simon.beaumont@citrix.com>
s/Stringext/Xstringext/g

Signed-off-by: Jon Ludlam <jonathan.ludlam@citrix.com>
Merge pull request #1742 from jonludlam/great_stringext_rename

s/Stringext/Xstringext/g
CA-134765: Fix race condition in database layer

The read_records_where function in the database layer (used by the
get_all_records and get_all_records_where APIs) was reading the database
multiple times by calling find_refs_with_filter[1] to get the refs that matched
the query and then calling read_record[2] for each of these refs.

This violates point #2 of the  locking strategy stated at the top of the module
that read only functions must only call get_database once to ensure they
operate on a consistent snapshot.

Since [1] and [2] make get_database calls the get_all_records* functions make
n+1 calls to get_database for a table with n records. Because of this, deleting
a record during a get_all_records_where will result in a DBCache_NotFound
exception with parameter "missing row".

This commits adds internal variants of functions [1] and [2] that take
an actual instance of Database.t rather than a Db_ref.t which is a Database.t
ref ref.

Signed-off-by: Si Beaumont <simon.beaumont@citrix.com>
Merge pull request #1745 from simonjbeaumont/ca-134675

CA-134765: Fix race condition in database layer
Merge pull request #1734 from simonjbeaumont/sctx-1616

CA-135187: Filter out restricted device_config keys
Merge pull request #1736 from simonjbeaumont/ca-135189

CA-135189: Remove restricted device_config on upgrade