[SVE][IR] Scalable Vector size queries and IR instruction support
- Adds a TypeSize struct to represent the known minimum size of a type along with a flag to indicate that the runtime size is a integer multiple of that size
- Converts existing size query functions from Type.h and DataLayout.h to return a TypeSize result
- Adds convenience methods (including a transparent conversion operator to uint64_t) so that most existing code 'just works' as if the return values were still scalars.
- Uses the new size queries along with ElementCount to ensure that all supported instructions used with scalable vectors can be constructed in IR.
Reviewers: hfinkel, lattner, rkruppe, greened, rovka, rengolin, sdesmalen
Reviewed By: rovka, sdesmalen
Differential Revision: https://reviews.llvm.org/D53137