Remove restriction on dialect type to allow structs and object params

This allows implementing a dialect using structs and json struct tags, e.g. for
allowing `json:",omitempty"` on params field.  Also allows passing an object
instead of an array for params.