Computes the number of bits in the datatype.
This works for unpacked datatypes as well as packed ones; you should check separately that the datatype is packed if that is what you want. Returns nil without error if given a datatype that has no fixed bit size, e.g. if it contains a real number or has unsized dimensions. We produce an error message if a usertype is not found, if the recursion limit runs out, or if unresolved dimensions are present.