Backend-neutral semantic memory API.
@spec available?() :: boolean()
@spec backend() :: module()
@spec recall( String.t(), keyword() ) :: {:ok, [map()]} | {:error, term()}
@spec reflect( String.t() | atom(), keyword() ) :: {:ok, term()} | {:error, term()}
@spec retain(String.t(), map(), keyword()) :: :ok
@spec retain_sync(String.t(), map(), keyword()) :: {:ok, map()} | {:error, term()}