introduce the notion of a wire type, and check that and the nullability of columns when comparing schemas

This differs from the declared column type in that it only has enough information to pick the right msgpack encoding, and msgpack itself uses the smallest appropriate size for each value, rather than for the maximum possible values for the type.  This means we need many fewer cases.