Changed off API function

The `off` function now accepts either one or two parameters or none at all. Event listeners will be removed according to which parameters are provided. If you call `off` with no parameters, all listeners will be removed from the player.
Not checkinf for null here, as is done below.

It might be easier to use the truthy check, eg. !eventName && !callback instead of having to check both for undefined and null. A function is always true. A string might be false if it is empty, e.g. ''. But we will never implement an event which is the empty string so this shouldn't be an issue.

Function-wise it works well.