Storage callbacks for persisted ACL rules.
@type context() :: map()
@type opts() :: keyword()
@type reason() :: term()
@type rule() :: map()
@callback delete_rule(context(), map()) :: :ok | {:error, reason()}
@callback list_rules(context(), opts()) :: {:ok, [rule()]} | {:error, reason()}
@callback put_rule(context(), rule()) :: {:ok, rule()} | {:error, reason()}