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.
`tslint` can catch these errors, however there seems to be a bug since it is complaining that a type is required for constructors, but TypeScript doesn't allow that.  I will address this specific issue for now and work with https://github.com/palantir/tslint to make this work properly with `constructor()` after more investigation.