ServerSocketAppenderBase now uses ExecutorService from context

If the appender does not have a thread pool configuration, we now use
the context's ExecutorService instead of creating a new one based on the
default ThreadPoolConfiguration.
updated tests to validate that context's executor is not shut down

In ServerSocketAppenderBase.stop, we must not shut down the executor
service if it is the context's executorService.  We only shut down an
executor that we created specifically for this appender.
SocketRemote now uses ExecutorService from context

The SocketRemote component doesn't want/need to allow the user to
provide a thread pool configuration, anyway, so we might as well use the
executor service provided by the context instead of creating our own.
modified SocketRemoteTest to validate executor service shutdown behavior

If a subclass provides a custom executor, we want to shut it down, but
if the context's executor is used, we must not shut it down.  The
revised test covers both cases.
SocketServer now uses ExecutorService from context

If the server has no thread pool configuration, the context's executor
service is now used by default.
updated tests to validate that context's executor is not shut down

n ServerSocket.stop, we must not shut down the executor
service if it belongs to the context.  We only shut down an
executor that we created specifically for the server.
fix functional test for ServerSocketAppenderBase

This test was broken when the InstrumentedServerSocketBase was modified
to allow assertion testing for the context's executor service.