Adding alignment to vm.buffer.alloc and vm.buffer.clone.
iree_vm_buffer_clone isn't as efficient today as there's no way to
allocate uninitialized aligned memory but that's ok because we don't
yet emit that call anyway.

Fixes #9165.
diff --git a/runtime/bindings/python/vm.cc b/runtime/bindings/python/vm.cc
index b550ce4..3e32df9 100644
--- a/runtime/bindings/python/vm.cc
+++ b/runtime/bindings/python/vm.cc
@@ -532,19 +532,21 @@
                          iree_vm_buffer_retain_ref, iree_vm_buffer_deref,
                          iree_vm_buffer_isa);
   vm_buffer
-      .def(py::init([](iree_host_size_t length, bool is_mutable) {
+      .def(py::init([](iree_host_size_t length, iree_host_size_t alignment,
+                       bool is_mutable) {
              iree_vm_buffer_access_t access = 0;
              if (is_mutable) {
                access |= IREE_VM_BUFFER_ACCESS_MUTABLE;
              }
              iree_vm_buffer_t* raw_buffer;
              CheckApiStatus(
-                 iree_vm_buffer_create(access, length, iree_allocator_system(),
-                                       &raw_buffer),
+                 iree_vm_buffer_create(access, length, alignment,
+                                       iree_allocator_system(), &raw_buffer),
                  "Error creating buffer");
              return VmBuffer::StealFromRawPtr(raw_buffer);
            }),
-           py::arg("length"), py::arg("mutable") = true)
+           py::arg("length"), py::arg("alignment") = 0,
+           py::arg("mutable") = true)
       .def_buffer([](VmBuffer& self) -> py::buffer_info {
         return py::buffer_info(
             /*ptr=*/self.raw_ptr()->data.data,