Special case Comma(math.MinInt64).

The lowest value of an int64 is itself when negated, so the rest of
the code kind of breaks down.  Short circuit it to avoid all the problems.

https://play.golang.org/p/AuAGwhJ69d

Closes: #45
diff --git a/comma.go b/comma.go
index 74f446b..eb285cb 100644
--- a/comma.go
+++ b/comma.go
@@ -2,6 +2,7 @@
 
 import (
 	"bytes"
+	"math"
 	"math/big"
 	"strconv"
 	"strings"
@@ -13,6 +14,12 @@
 // e.g. Comma(834142) -> 834,142
 func Comma(v int64) string {
 	sign := ""
+
+	// minin64 can't be negated to a usable value, so it has to be special cased.
+	if v == math.MinInt64 {
+		return "-9,223,372,036,854,775,808"
+	}
+
 	if v < 0 {
 		sign = "-"
 		v = 0 - v
diff --git a/comma_test.go b/comma_test.go
index 49040fb..89daca5 100644
--- a/comma_test.go
+++ b/comma_test.go
@@ -20,6 +20,8 @@
 		{"10,001,000", Comma(10001000), "10,001,000"},
 		{"123,456,789", Comma(123456789), "123,456,789"},
 		{"maxint", Comma(9.223372e+18), "9,223,372,000,000,000,000"},
+		{"math.maxint", Comma(math.MaxInt64), "9,223,372,036,854,775,807"},
+		{"math.minint", Comma(math.MinInt64), "-9,223,372,036,854,775,808"},
 		{"minint", Comma(-9.223372e+18), "-9,223,372,000,000,000,000"},
 		{"-123,456,789", Comma(-123456789), "-123,456,789"},
 		{"-10,100,000", Comma(-10100000), "-10,100,000"},