Remove padding from Diffable output

When comparing maps where the padding differs between the two sets of keys, the
diff will include keys that were unchanged except for the padding difference.

For example, Arthur Dent appears as a diff due to different padding:
```
{
  Crew: {
-        Arthur Dent:       "Along for the Ride",
-        Zaphod Beeblebrox: "Galactic President",
+        Arthur Dent: "Along for the Ride",
        },
 }
```

This omits padding when `Diffable = true` so that the diff output is consistent
to prevent these spurious diffs.
diff --git a/pretty/examples_test.go b/pretty/examples_test.go
index 13b534a..f061464 100644
--- a/pretty/examples_test.go
+++ b/pretty/examples_test.go
@@ -59,23 +59,23 @@
 	// Players: {player1:[1,3],player2:[0,-1]}
 	// Map State:
 	// {
-	//  Name:      "Rock Creek",
-	//  Players:   {
-	//              player1: [
-	//                        1,
-	//                        3,
-	//                       ],
-	//              player2: [
-	//                        0,
-	//                        -1,
-	//                       ],
-	//             },
+	//  Name: "Rock Creek",
+	//  Players: {
+	//   player1: [
+	//    1,
+	//    3,
+	//   ],
+	//   player2: [
+	//    0,
+	//    -1,
+	//   ],
+	//  },
 	//  Obstacles: {
-	//              [0,0]: "rock",
-	//              [0,1]: "stream",
-	//              [1,1]: "stream",
-	//              [2,1]: "pond",
-	//             },
+	//   [0,0]: "rock",
+	//   [0,1]: "stream",
+	//   [1,1]: "stream",
+	//   [2,1]: "pond",
+	//  },
 	// }
 }
 
@@ -134,6 +134,7 @@
 	expected := &ShipManifest{
 		Name: "Spaceship Heart of Gold",
 		Crew: map[string]string{
+			"Trillian":      "Human",
 			"Rowan Artosok": "Captain",
 		},
 		Androids: 1,
@@ -143,16 +144,16 @@
 	fmt.Println(pretty.Compare(reported, expected))
 	// Output:
 	//  {
-	//   Name:     "Spaceship Heart of Gold",
-	//   Crew:     {
-	// -            Arthur Dent:       "Along for the Ride",
-	// -            Ford Prefect:      "A Hoopy Frood",
-	// -            Trillian:          "Human",
-	// -            Zaphod Beeblebrox: "Galactic President",
-	// +            Rowan Artosok: "Captain",
-	//             },
+	//   Name: "Spaceship Heart of Gold",
+	//   Crew: {
+	// -  Arthur Dent: "Along for the Ride",
+	// -  Ford Prefect: "A Hoopy Frood",
+	// +  Rowan Artosok: "Captain",
+	//    Trillian: "Human",
+	// -  Zaphod Beeblebrox: "Galactic President",
+	//   },
 	//   Androids: 1,
-	// - Stolen:   true,
-	// + Stolen:   false,
+	// - Stolen: true,
+	// + Stolen: false,
 	//  }
 }
diff --git a/pretty/public_test.go b/pretty/public_test.go
index 957cdeb..01fd3ff 100644
--- a/pretty/public_test.go
+++ b/pretty/public_test.go
@@ -50,14 +50,14 @@
 				},
 			},
 			diff: ` {
-- Name:    "Zaphd",
-+ Name:    "Zaphod",
-  Age:     42,
+- Name: "Zaphd",
++ Name: "Zaphod",
+  Age: 42,
   Friends: [
-            "Ford Prefect",
-            "Trillian",
--           "Marvin",
-           ],
+   "Ford Prefect",
+   "Trillian",
+-  "Marvin",
+  ],
  }`,
 		},
 	}
@@ -102,15 +102,15 @@
 				},
 			},
 			diff: ` {
-- Name:    "Zaphd",
-+ Name:    "Zaphod",
+- Name: "Zaphd",
++ Name: "Zaphod",
   Species: "Betelgeusian",
-  Age:     42,
+  Age: 42,
 + Friends: [
-+           "Ford Prefect",
-+           "Trillian",
-+           "",
-+          ],
++  "Ford Prefect",
++  "Trillian",
++  "",
++ ],
  }`,
 		},
 	}
diff --git a/pretty/structure.go b/pretty/structure.go
index 2c963ea..e802340 100644
--- a/pretty/structure.go
+++ b/pretty/structure.go
@@ -61,16 +61,20 @@
 func (l keyvals) Less(i, j int) bool { return l[i].key < l[j].key }
 
 func (l keyvals) WriteTo(w *bytes.Buffer, indent string, cfg *Config) {
-	keyWidth := 0
+	padding := ""
+	inner := indent + " "
 
-	for _, kv := range l {
-		if kw := len(kv.key); kw > keyWidth {
-			keyWidth = kw
+	if !cfg.Compact && !cfg.Diffable {
+		keyWidth := 0
+		for _, kv := range l {
+			if kw := len(kv.key); kw > keyWidth {
+				keyWidth = kw
+			}
 		}
+		padding = strings.Repeat(" ", keyWidth+1)
+		inner += " " + padding
 	}
-	padding := strings.Repeat(" ", keyWidth+1)
 
-	inner := indent + "  " + padding
 	w.WriteByte('{')
 	for i, kv := range l {
 		if cfg.Compact {
@@ -83,14 +87,18 @@
 			}
 			w.WriteString(kv.key)
 			w.WriteByte(':')
-			w.WriteString(padding[len(kv.key):])
+			if cfg.Diffable {
+				w.WriteByte(' ')
+			} else {
+				w.WriteString(padding[len(kv.key):])
+			}
 		}
 		kv.val.WriteTo(w, inner, cfg)
 		if i+1 < len(l) || cfg.Diffable {
 			w.WriteByte(',')
 		}
 	}
-	if !cfg.Compact && cfg.Diffable && len(l) > 0 {
+	if !cfg.Compact && cfg.Diffable {
 		w.WriteString("\n")
 		w.WriteString(indent)
 	}
diff --git a/pretty/structure_test.go b/pretty/structure_test.go
index 0f0d91d..b3cce2d 100644
--- a/pretty/structure_test.go
+++ b/pretty/structure_test.go
@@ -48,7 +48,7 @@
  age:  42}`,
 			extended: `{
  name: "zaphod",
- age:  42,
+ age: 42,
 }`,
 		},
 		{
@@ -99,15 +99,16 @@
  ],
  {
   trillian: {
-             race: "human",
-             age:  36,
-            },
-  zaphod:   {
-             occupation: "president of the galaxy",
-             features:   "two heads",
-            },
+   race: "human",
+   age: 36,
+  },
+  zaphod: {
+   occupation: "president of the galaxy",
+   features: "two heads",
+  },
  },
- {},
+ {
+ },
 ]`,
 		},
 	}