IDE: Fix reset handling

Problem: x86 systems could not survive a few system_resets.

Clear most of IDE state when reset. Implement the missing reset handlers.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
diff --git a/hw/ide/mmio.c b/hw/ide/mmio.c
index 84a20e5..cca883f 100644
--- a/hw/ide/mmio.c
+++ b/hw/ide/mmio.c
@@ -41,6 +41,13 @@
     int shift;
 } MMIOState;
 
+static void mmio_ide_reset(void *opaque)
+{
+    MMIOState *s = opaque;
+
+    ide_bus_reset(&s->bus);
+}
+
 static uint32_t mmio_ide_read (void *opaque, target_phys_addr_t addr)
 {
     MMIOState *s = opaque;
@@ -127,5 +134,6 @@
     cpu_register_physical_memory(membase, 16 << shift, mem1);
     cpu_register_physical_memory(membase2, 2 << shift, mem2);
     vmstate_register(0, &vmstate_ide_mmio, s);
+    qemu_register_reset(mmio_ide_reset, s);
 }