THRIFT-1880 Make named pipes server work asynchronously (overlapped) to allow for clean server stops

Patch: Jens Geyer
diff --git a/lib/delphi/src/Thrift.Server.pas b/lib/delphi/src/Thrift.Server.pas
index 8af399e..e6ab7ac 100644
--- a/lib/delphi/src/Thrift.Server.pas
+++ b/lib/delphi/src/Thrift.Server.pas
@@ -266,16 +266,18 @@
   end;
 
   client := nil;
-  InputTransport := nil;
-  OutputTransport := nil;
-  InputProtocol := nil;
-  OutputProtocol := nil;
-
   while (not FStop) do
   begin
     try
+      // clean up any old instances before waiting for clients
+      InputTransport := nil;
+      OutputTransport := nil;
+      InputProtocol := nil;
+      OutputProtocol := nil;
+
       client := FServerTransport.Accept;
       FLogDelegate( 'Client Connected!');
+
       InputTransport := FInputTransportFactory.GetTransport( client );
       OutputTransport := FOutputTransportFactory.GetTransport( client );
       InputProtocol := FInputProtocolFactory.GetProtocol( InputTransport );
@@ -284,6 +286,7 @@
       begin
         if FStop then Break;
       end;
+
     except
       on E: TTransportException do
       begin