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.
Yes, we should.  I will see if this can be enforced by `tslint` and make the change.