Enable tests for unicode for python, swift. (#2070)

Re-enable build swift/python containers (for tests to run).
Add unicode unit test for swift action container.
Allow for reinit with swift for use with invoke.py.
Fix unicode regression for swift actions.
Refactor unicode tests to add coverage - now also for base action container.
Set string encoding to utf-8 for swift action proxy.
Rewrite result extraction to avoid splitting and printing logs one line at a time.
Skip decoding when process output is a string; already utf-8.

Consolidate base64 encoding in CLI; remove Jar field in exec.
diff --git a/tests/src/test/scala/actionContainers/SwiftActionContainerTests.scala b/tests/src/test/scala/actionContainers/SwiftActionContainerTests.scala
index 25a88cf..3369e2a 100644
--- a/tests/src/test/scala/actionContainers/SwiftActionContainerTests.scala
+++ b/tests/src/test/scala/actionContainers/SwiftActionContainerTests.scala
@@ -95,25 +95,41 @@
         |}
         """.stripMargin)
     */
+
     testEcho(Seq {
         ("swift", """
-        |import Foundation
-        |
-        |extension FileHandle : TextOutputStream {
-        |   public func write(_ string: String) {
-        |       guard let data = string.data(using: .utf8) else { return }
-        |       self.write(data)
-        |   }
-        |}
-        |func main(args: [String: Any]) -> [String: Any] {
-        |     print("hello stdout")
-        |     var standardError = FileHandle.standardError
-        |     print("hello stderr", to: &standardError)
-        |     return args
-        |}
+         | import Foundation
+         |
+         | extension FileHandle : TextOutputStream {
+         |     public func write(_ string: String) {
+         |         guard let data = string.data(using: .utf8) else { return }
+         |         self.write(data)
+         |     }
+         | }
+         |
+         | func main(args: [String: Any]) -> [String: Any] {
+         |     print("hello stdout")
+         |     var standardError = FileHandle.standardError
+         |     print("hello stderr", to: &standardError)
+         |     return args
+         | }
         """.stripMargin)
     })
 
+    testUnicode(Seq {
+        ("swift", """
+         | func main(args: [String: Any]) -> [String: Any] {
+         |     if let str = args["delimiter"] as? String {
+         |         let msg = "\(str) ☃ \(str)"
+         |         print(msg)
+         |         return [ "winter" : msg ]
+         |     } else {
+         |         return [ "error" : "no delimiter" ]
+         |     }
+         | }
+         """.stripMargin.trim)
+    })
+
     testEnv(Seq {
         ("swift", envCode)
     }, enforceEmptyOutputStream)
@@ -122,7 +138,7 @@
         withActionContainer() { c =>
             val code = """
                 | func niam(args: [String: Any]) -> [String: Any] {
-                |   return [ "result": "it works" ]
+                |     return [ "result": "it works" ]
                 | }
                 |""".stripMargin
 
@@ -298,7 +314,7 @@
                 | import AlchemyVision
                 |
                 | func main(args: [String:Any]) -> [String:Any] {
-                |   return ["message": "I compiled and was able to import Watson SDKs"]
+                |     return ["message": "I compiled and was able to import Watson SDKs"]
                 | }
             """.stripMargin