[ZEPPELIN-4280] Fix an issue that makes an infinite loop while switching the visualizations

### What is this PR for?
Fix an issue that makes an infinite loop while switching the visualizations.

An infinite loop occurs because the front-end web application tries to commit the paragraph even if there are no changes in the visualization configuration.

### What type of PR is it?
Bug Fix

### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-4280

### How should this be tested?
If you switch quickly between different visualizations multiple times, the infinite loops should not happen.

### Screenshots (if appropriate)

### Questions:
* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No

Author: Jaewon Seo <jaewon@zepl.com>

Closes #3414 from Byeol/ZEPPELIN-4280 and squashes the following commits:

d49d36ac1 [Jaewon Seo] Commit the paragraph only if there are changes in the visualization configuration

(cherry picked from commit be7ace1f5e84c7a5989b4d5882cbf759de34112d)
Signed-off-by: Lee moon soo <moon@apache.org>
diff --git a/zeppelin-web/src/app/notebook/paragraph/result/result.controller.js b/zeppelin-web/src/app/notebook/paragraph/result/result.controller.js
index 517fcbe..1723e7e 100644
--- a/zeppelin-web/src/app/notebook/paragraph/result/result.controller.js
+++ b/zeppelin-web/src/app/notebook/paragraph/result/result.controller.js
@@ -802,6 +802,9 @@
         newConfig.graph.values = newConfig.graph.commonSetting.pivot.values;
         delete newConfig.graph.commonSetting.pivot;
       }
+      if (angular.equals($scope.config, newConfig)) {
+        return;
+      }
       console.debug('committVizConfig', newConfig);
       let newParams = angular.copy(paragraph.settings.params);
       commitParagraphResult(paragraph.title, paragraph.text, newConfig, newParams);