Various pseudowire fixes and improvements.

- Co-ordination when creating - removing pseudowires from
  different instances with a use of a DistributedLock.
- Fixed REST API To return json with specific error for
  the single pw instantiation.
- Fixed REST API to return specific error also for pseudowires
  that could not be decoded.
- Minor bug fix to return appropriate error when instantiating
  a pw from the command line that could not be decoded.
- Fixed bug when creating spine-leaf-leaf pseudowire where we observed flows in pending state.
- Improved logging.

Change-Id: I60dd0ebf8af63ca74d18cfe4801d01846641fb7b
diff --git a/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireRemoveCommand.java b/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireRemoveCommand.java
index 362ebbb..d0f217d 100644
--- a/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireRemoveCommand.java
+++ b/app/src/main/java/org/onosproject/segmentrouting/cli/PseudowireRemoveCommand.java
@@ -49,11 +49,13 @@
         int pwIntId;
         try {
             pwIntId = parsePwId(pwId);
-        } catch (Exception e) {
-            print("Exception while parsing pseudowire id : {}", e);
+        } catch (IllegalArgumentException e) {
+            log.error("Exception while parsing pseudowire id : \n\t %s", e.getMessage());
+            print("Exception while parsing pseudowire id : \n\t %s", e.getMessage());
             return;
         }
 
+        log.info("Removing pseudowire {} from the command line.", pwIntId);
         L2TunnelHandler.Result res = mngr.removePseudowire(pwIntId);
         switch (res) {
             case WRONG_PARAMETERS: