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.
Turns out that PR palantir/tslint#245 addressed the bug already.  Once the next version of `tslint` is released we can bump-up to the latest version and enable these checks at lint time.