Part 2: define a type to encapsulate query inputs.
Part 2: define a type to encapsulate query inputs.

This is for two reasons.

Firstly, we need to track the types of inputs, their values, and also
the input variables; adding a struct gives us a little more clarity.

Secondly, when we come to implement prepared statements, we'll be
algebrizing queries without having the values available. We'll be able
to do a better job of algebrizing, and also do more validating, if we
allow callers to specify the types of variables in advance, even if the
values aren't known.

mozilla/mentat,ncalexan/datomish,ncalexan/mentat,ncalexan/mentat,mozilla/mentat,mozilla/mentat,mozilla/mentat,ncalexan/datomish,ncalexan/mentat,ncalexan/mentat,ncalexan/mentat,ncalexan/mentat,mozilla/mentat,mozilla/mentat