See subtasks, plus:
* configure.ac does `AC_CHECK_LIB(pe_rules, test_rule, , missing="yes")` but `test_rule()` (and all of libpe_rules) is now deprecated; note that SBD doesn't actually use anything from or link with libpe_rules, so this can just be dropped
* sbd-cluster.c uses the existence of `CRM_SCORE_INFINITY` to decide when to use the pacemaker-remote binary name; the constant is deprecated in favor of `PCMK_SCORE_INFINITY`, so test for either
* sbd-inquisitor.c depends on transitive inclusion of limits.h (as does sbd.h), libxml/tree.h, and glib.h via Pacemaker headers; include them explicitly
* sbd-pacemaker.c
** uses the deprecated `GListPtr` type; use `GList *` instead
** uses the deprecated `XML_TAG_CIB` constant; use `PCMK_XE_CIB` instead when available
** uses the deprecated `is_set()` macro; use `pcmk_is_set()` instead when available
** uses the deprecated `copy_xml()` function; no replacement will be made available, so redefine it per Pacemaker 2.1.7
* From `crm/cluster.h` (see T788), sbd uses:
** `enum cluster_type_e` with values `pcmk_cluster_unknown` and `pcmk_cluster_corosync`; the enum and values will soon be renamed
** `crm_cluster_t`, which will soon be renamed `pcmk_cluster_t`; direct access to the `destroy` and `cpg.cpg_callbacks_t` members will be replaced with functions
** `get_cluster_type()`, `name_for_cluster_type()`, and `crm_cluster_connect()`, which will soon be renamed
** configure.ac does `AC_CHECK_LIB(crmcluster, crm_peer_init, , missing="yes")` but doesn't actually use `crm_peer_init()`, which will soon be deprecated; no name will be present in libcrmcluster in all Pacemaker versions, so check for a new API, and if unavailable, check for an old one (`get_cluster_type()` would be better since SBD actually uses it)
* SBD uses a lot of deprecated scheduler APIs
** configure.ac checks for `enum pe_quorum_policy policy` with a value of `no_quorum_demote`, and the code additionally uses other values; all those values are deprecated in favor of names with a `pcmk_` prefix, so check for both old and new names
** The resource struct will soon be refactored (see T790); sbd uses the deprecated `resource_t` type alias (use `pcmk_resource_t` instead when available), and directly accesses the `id` and `flags` members (use the new accessors instead when available)
** The node structs will soon be refactored (see T789); sbd uses the deprecated `node_t` type alias (use `pcmk_node_t` instead when available), and directly accesses multiple members (use the new accessors instead when available)
** The main scheduler struct will soon be refactored (see T791); sbd uses the deprecated `pe_working_set_t` type alias (use `pcmk_scheduler_t` instead when available), and directly accesses multiple members (use the new accessors instead when available)
** Replace `pe_reset_working_set()` with `pcmk_reset_scheduler()` when available
** Replace `pe_new_working_set()` with `pcmk_new_scheduler()` when available
** Replace `pe_free_working_set()` with `pcmk_free_scheduler()` when available
Existing SBD versions should continue to build with Pacemaker 3.0.0, but the code should be updated as soon as practical to continue to build with future Pacemaker versions.