Change channel priority sort

This fixes issue #15 where a subscriber with an initial priority of 9
winds up being called after a subscriber with priority 1 which was later
added.

Instead of manually splicing the subscriber into the array of
subscribers the `addSubscriber` and `setPriority` and changing the value
of the priority property, subscribers are now sorted using the `sort`
function of the array with a custom compare function.

This compare function will sort the subscribers based on their `priority`
property on the `options` object in descending order. The custom sort
method doesn't not manipulate the value of the priorityproperty giving a
much more predictable result.

The unit tests for the priorities have been update to better test if the
sort works as expected. An additional unit test specifically for
issue #15 has been added.