Add read-only mode to getChannel

getChannel would always create every non-existing channel in a channel's
hierarchy. When setting up a subscription this is fine but when trying to
retrieve or publish this behaviour is unwanted.

In the following cases this could cause the creation of unnecessary or
even unwanted channels:
  - getSubscriber, if the channel doesn't exist there is no subscriber
    and no need to create the channel
  - remove, if the channel doesn't exist there is nothing to
    remove and no need to create the channel
  - publish, when trying to publish data to a channel there is no need
    to create the channel as there would be no subscribers
Any of these scenario's could happen when there is a typo in the channel
namespace.
Always return a channel from getChannel

The method `getChannel()` should always return a Channel object. The
previous change to return `null` once a sub-channel was not present
resulted in the following use case to break:

Publish to a channel that hasn't been created but does have an existing
parent channel.

This used to work as `getChannel` would always create whatever channel was
passed along to it. By introducing the read-only mode this behaviour was
broken. It went undetected as there was no unit test covering this
scenario. A unit test for this scenario has been added for future
reference.

Now that `getChannel` once again always returns a channel object we can
test if the namespace of the returned channel matches the requested
namespace. If it doesn't match we know the requested channel is not
available and are returned the most specific channel that was created.

Example:
```
mediator.subscribe('root', callback);
mediator.publish('root:sub');
```
This should result in the callback method for the `root` channel to be
called.
Merge pull request #31 from tbusser/feature/getChannel-refactor

Add read-only mode to getChannel