Graceful handling of nil errors (#16)

We shouldn't panic if *multiError is nil.

diff --git a/error.go b/error.go
index c6a9b75..fe85179 100644
--- a/error.go
+++ b/error.go
@@ -76,6 +76,10 @@
 }
 
 func (merr *multiError) Error() string {
+	if merr == nil {
+		return ""
+	}
+
 	buff := _bufferPool.Get().(*bytes.Buffer)
 	buff.Reset()
 
diff --git a/error_test.go b/error_test.go
index e05b905..7f3d125 100644
--- a/error_test.go
+++ b/error_test.go
@@ -367,3 +367,11 @@
 
 	wg.Wait()
 }
+
+func TestNilMultierror(t *testing.T) {
+	// For safety, all operations on multiError should be safe even if it is
+	// nil.
+	var err *multiError
+
+	require.Empty(t, err.Error())
+}