Summary of important user-visible changes for llms 0.2.1:
---------------------------------------------------------

 A bug-fix release.  Four of the five items are on the path a first use takes:
 clearing a chat history, setting a system message, and dispatching a tool call
 whose arguments arrive in the order the model chose rather than the order they
 were declared in.

 ** `clearHistory (llm)` raised "Invalid call to index" and cleared nothing.
    Its numeric form was inverted as well: `clearHistory (llm, [1 2])` was
    rejected as invalid while `clearHistory (llm, [2 2])` was accepted.

 ** `systemMessage` could be assigned but not read back.  `muteThinking` could
    be neither read nor written, although it is documented and is consulted in
    three places internally.  Both properties now work, and `muteThinking` is
    validated as a logical scalar.

 ** A tool call whose arguments arrived in a different order from the declared
    one was rejected, and rejected silently.  The members of a JSON object are
    unordered, so this struck at random depending on the model and the call.
    Argument names are now matched as a set, and the values are read in the
    declared order.

 ** A rejected tool call now returns the reason as its tool result instead of
    nothing at all.  Through a `toolRegistry` it previously produced an empty
    cell, so the model was told nothing and either repeated the call or
    invented an answer.

 ** New: optional tool parameters.  `addParameters` accepts Name/Value pairs
    after its fourth argument, where "default" marks a parameter optional and
    supplies the value used when a call leaves it out, and "enum" may be given
    the same way.  A parameter with a default is omitted from the schema's
    required list and the default is advertised to the model.  The positional
    fifth argument keeps its meaning.
