Use factory per Pusher instance

Use of static methods on Factory was convenient,
but meant that channels and subscriptions were
not isolated between Pusher instances

Factorys are now instanciated one per Pusher
and passed down to classes which need to invoke
them. Factory methods and 'singletons' are no longer
static.

End-to-end tests were shifted between packages so
that the package-private testing constructor is
visible.
Support alternative clusters (end-points)

Support endpoint configuration following the pattern
laid out by the pusher-js-client library.

Update version - breaking API changes

Introduce a changelog