Refactor DB#usable_spare? and Topology#query_spare_assets to allow validation check failures to include error messages. Plugins should now override DB#validate_spare instead of DB#usable_spare?, since the validation probe has been separated from the predicate.