MIME4J-306 MimeUtil::unfold should group char appends (#52)

Calling repeatedly append requires ensuring the capacity amongst other.

Appends to the string builder can be done for all previous chars when a line delimiter is encountered, thus reducing the cost of the operation.

Gain: 66%
diff --git a/core/src/main/java/org/apache/james/mime4j/util/MimeUtil.java b/core/src/main/java/org/apache/james/mime4j/util/MimeUtil.java
index fb07272..7241e1b 100644
--- a/core/src/main/java/org/apache/james/mime4j/util/MimeUtil.java
+++ b/core/src/main/java/org/apache/james/mime4j/util/MimeUtil.java
@@ -263,12 +263,19 @@
             sb.append(s, 0, crlfIdx);
         }
 
+        int lastLineBreak = crlfIdx;
         for (int idx = crlfIdx + 1; idx < length; idx++) {
             char c = s.charAt(idx);
-            if (c != '\r' && c != '\n') {
-                sb.append(c);
+            if (c == '\r' || c == '\n') {
+                if (idx > lastLineBreak + 1) {
+                    sb.append(s, lastLineBreak + 1, idx);
+                }
+                lastLineBreak = idx;
             }
         }
+        if (lastLineBreak < s.length() - 1 && s.length() > 0) {
+            sb.append(s, lastLineBreak + 1, s.length());
+        }
 
         return sb.toString();
     }