IVGCVSW-6114 Create multiple LoadedNetworks from one OptimizedNetwork

 * Added IOptimizedNetwork constructor that takes another
   IOptimizedNetwork and a ModelOptions.
 * Changed PreCompiledLayer to use shared_ptr rather than unique_ptr
   to store the PreCompiledObject (no interface changes).
 * Added unit tests to ensure that PreCompiledLayer::Clone() clones
   the pointer to the PreCompiledObject correctly.

Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Change-Id: I3ef56055e0d189ffce9e651882d34da16c70a240
diff --git a/src/armnn/OptimizedNetworkImpl.hpp b/src/armnn/OptimizedNetworkImpl.hpp
index fe55ca2..d42cff7 100644
--- a/src/armnn/OptimizedNetworkImpl.hpp
+++ b/src/armnn/OptimizedNetworkImpl.hpp
@@ -11,6 +11,7 @@
 class OptimizedNetworkImpl
 {
 public:
+    OptimizedNetworkImpl(const OptimizedNetworkImpl& other, const ModelOptions& modelOptions);
     OptimizedNetworkImpl(std::unique_ptr<Graph> graph);
     OptimizedNetworkImpl(std::unique_ptr<Graph> graph, const ModelOptions& modelOptions);
     virtual ~OptimizedNetworkImpl();