Fix: libcluster: overhaul peer cache management
Previously, peer caches could get into buggy states (for example, as described
in RH BZ#1193499, exiting peers would not always be removed from the cache,
causing "member weirdness" messages and other problems if a newly added node
reused the former peer's node ID). Mainly this was because cache
management was left to daemons' peer status callbacks, and an external command
("crm_node -R") was needed to clear a node from the cache.
Now, cache management is handled within the libcluster routines, so clients
don't need to.
Additionally, these changes fix some use-after-free bugs where callers
tried to use a node object that had been reaped by libcluster, and
an issue where the cib purged lost nodes but not evicted ones.