expose `Subscription` as a class instead of an interface
expose `Subscription` as a class instead of an interface

When `interface Subscription` was exposed, callers could add their own
properties to the subscription object that would be passed-into the
blpapi wrapper.  This caused problems with the internal logging for
calls to `subscribe()` and `unsubscribe()` since additional properites
were being serialized.  To prevent this from happening, the wrapper now
exposes `Subscription` as a **class** and provides a `private toJSON()`
method for `JSON.stringify` to only serialize the properties that the
wrapper cares about for logging.

bloomberg/blpapi-http,bloomberg/blpapi-http,flojdek/blpapi-http,flojdek/blpapi-http,flojdek/blpapi-http,fyquah95/blpapi-http,fyquah95/blpapi-http,bloomberg/blpapi-http,flojdek/blpapi-http,fyquah95/blpapi-http,flojdek/blpapi-http