subscription tweaks + documentation
make cancel() remove the cancellation function to avoid redundant calls
add forever() to allow a subscription to be killed without cancelling