properly handle session termination

A case was missed when the session is stopped determinsticially, but was
relying on the next underlying event to be emitted to handle setting the
session to `null'`.  Another asynchronous event could also happen in
between where '.stop()' was called, but the Session wasn't marked as
terminated already.

This change uses a cached Promise to resolve whether underlying session
is proplery stopped and having the wrappers internal state set
appropriately.
improve blpapi-wrapper logging with log levels

Refactored logging to properly distinguish between debug and trace level
logging.
use TypeScript anonymous functions and minor cleanup

During the converstion to TypeScript, there was a missed '() => {}'
style anonymous function.  Also, removed '// TODO' comments that were
resolved.
refactor operations into private methods

This change is in preparation for supporting subscriptions.  The
generation of the next correlator id has been refactored into a
independent method as well as the code required to open a service.
re-use correlationId as key for outstanding requests

Instead of keeping track of a separate identifier for outstanding
requests, re-use the correlation id since it is echoed back in the
request handler.
unify cleanup on session termination

This change consolidates similar functionality that was duplicated with
slight variations.  Now, the code path has the same generic structure
with the different functionality confined to their own respective
callbacks.
echo an extra newline in example/ex1.sh

At the end of the example, the extra newlines ensure that your command
prompt displays properly.