MINIFICPP-513: Avoid rvalue ref and move semantics. let compiler take care of movement optimization

This closes #346.

Signed off by @achristianson.

Signed-off-by: Marc Parisi <phrocker@apache.org>
diff --git a/libminifi/include/controllers/NetworkPrioritizerService.h b/libminifi/include/controllers/NetworkPrioritizerService.h
index bf7916f..7821f26 100644
--- a/libminifi/include/controllers/NetworkPrioritizerService.h
+++ b/libminifi/include/controllers/NetworkPrioritizerService.h
@@ -89,7 +89,7 @@
 
   virtual void onEnable();
 
-  virtual io::NetworkInterface &&getInterface(uint32_t size);
+  virtual io::NetworkInterface getInterface(uint32_t size);
 
  protected:
 
diff --git a/libminifi/include/io/NetworkPrioritizer.h b/libminifi/include/io/NetworkPrioritizer.h
index 7265f49..6c1f27f 100644
--- a/libminifi/include/io/NetworkPrioritizer.h
+++ b/libminifi/include/io/NetworkPrioritizer.h
@@ -35,7 +35,7 @@
   virtual ~NetworkPrioritizer() {
   }
 
-  virtual NetworkInterface &&getInterface(uint32_t size) = 0;
+  virtual NetworkInterface getInterface(uint32_t size) = 0;
 
  protected:
   friend class NetworkInterface;
@@ -46,15 +46,21 @@
 class NetworkInterface {
  public:
 
-  NetworkInterface() : prioritizer_(nullptr){
+  NetworkInterface()
+      : prioritizer_(nullptr) {
   }
 
-  virtual ~NetworkInterface(){
+  virtual ~NetworkInterface() {
   }
 
   explicit NetworkInterface(const std::string &ifc, const std::shared_ptr<NetworkPrioritizer> &prioritizer)
-      : ifc_(ifc),
-        prioritizer_(prioritizer) {
+      : prioritizer_(prioritizer) {
+    ifc_ = ifc;
+  }
+
+  NetworkInterface(const NetworkInterface &other)
+      : prioritizer_(other.prioritizer_) {
+    ifc_ = other.ifc_;
   }
 
   explicit NetworkInterface(const NetworkInterface &&other)
@@ -90,6 +96,10 @@
 
 class NetworkPrioritizerFactory {
  public:
+  NetworkPrioritizerFactory()
+      : np_(nullptr) {
+
+  }
   static std::shared_ptr<NetworkPrioritizerFactory> getInstance() {
     static std::shared_ptr<NetworkPrioritizerFactory> fa = std::make_shared<NetworkPrioritizerFactory>();
     return fa;
diff --git a/libminifi/include/io/StreamFactory.h b/libminifi/include/io/StreamFactory.h
index f3fc95e..6f71434 100644
--- a/libminifi/include/io/StreamFactory.h
+++ b/libminifi/include/io/StreamFactory.h
@@ -55,7 +55,6 @@
     auto socket = delegate_->createSocket(host, port);
     auto prioritizer_ = NetworkPrioritizerFactory::getInstance()->getPrioritizer();
     if (nullptr != prioritizer_) {
-      std::cout << "prioritizer" << std::endl;
       auto &&ifc = prioritizer_->getInterface(estimated_size);
       if (ifc.getInterface().empty()) {
         return nullptr;
diff --git a/libminifi/src/controllers/NetworkPrioritizerService.cpp b/libminifi/src/controllers/NetworkPrioritizerService.cpp
index d88921b..63210ec 100644
--- a/libminifi/src/controllers/NetworkPrioritizerService.cpp
+++ b/libminifi/src/controllers/NetworkPrioritizerService.cpp
@@ -65,8 +65,9 @@
 /**
  * If not an intersecting operation we will attempt to locate the highest priority interface available.
  */
-io::NetworkInterface &&NetworkPrioritizerService::getInterface(uint32_t size = 0) {
+io::NetworkInterface NetworkPrioritizerService::getInterface(uint32_t size = 0) {
   std::vector<std::string> controllers;
+  std::string ifc = "";
   if (!network_controllers_.empty()) {
     if (sufficient_tokens(size) && size < max_payload_) {
       controllers.insert(std::end(controllers), std::begin(network_controllers_), std::end(network_controllers_));
@@ -74,24 +75,28 @@
   }
 
   if (!controllers.empty()) {
-    auto ifc = get_nearest_interface(controllers);
+    ifc = get_nearest_interface(controllers);
     if (!ifc.empty()) {
       reduce_tokens(size);
-      return std::move(io::NetworkInterface(ifc, shared_from_this()));
+      io::NetworkInterface newifc(ifc, shared_from_this());
+      return newifc;
     }
   }
   for (size_t i = 0; i < linked_services_.size(); i++) {
     auto np = std::dynamic_pointer_cast<NetworkPrioritizerService>(linked_services_.at(i));
     if (np != nullptr) {
       auto ifcs = np->getInterfaces(size);
-      auto ifc = get_nearest_interface(ifcs);
+      ifc = get_nearest_interface(ifcs);
       if (!ifc.empty()) {
         np->reduce_tokens(size);
-        return std::move(io::NetworkInterface(ifc, np));
+        io::NetworkInterface newifc(ifc, np);
+        return newifc;
       }
     }
   }
-  return std::move(io::NetworkInterface("", nullptr));
+
+  io::NetworkInterface newifc(ifc, nullptr);
+  return newifc;
 }
 
 std::string NetworkPrioritizerService::get_nearest_interface(const std::vector<std::string> &ifcs) {