A tool backed by an anonymous function.
The simplest way to create a tool — provide a name, description, parameter schema, and a handler function.
Creates a new FunctionTool.
@type handler() :: (ADK.Tool.Context.t(), map() -> {:ok, map()} | {:error, term()})
@type t() :: %ADK.Tool.FunctionTool{ description: String.t(), handler: handler(), is_long_running: boolean(), name: String.t(), parameters: map() }
@spec new(keyword()) :: t()