BLPAPI wrapper and miscellaneous improvements

These set of commits primarily refactored and improved the internal details of `blpapi-wrapper.js`.  The major takeaways are:

1. Properly handling all session termination in the event of asynchronous events
2. Improving the usage of TypeScript by adding precise type definitions
3. Reduce the usage of internal state that must be kept by re-using the already uniquely generated correlation ids
4. Extensive and proper usage of logging has been utilized

The other miscellaneous improvement has been improving the the `example/ex1.sh` script to echo a newline at the end to ensure the command prompt would be flushed left after execution.
Maybe we should think of refactoring out the interfaces and util classes out to a separate file. I generally prefers one class per module. Just easier to track.