Reification of a {@link Channel#getId() channel id} with methods to test propertiesand compare with other {@link ChannelId}s.
A {@link ChannelId} breaks the channel id into path segments so that, for example,{@code /foo/bar} breaks into {@code ["foo","bar"]}.
{@link ChannelId} can be wild, when they end with one or two wild characters {@code "*"}; a {@link ChannelId} is shallow wild if it ends with one wild character (for example {@code /foo/bar/*}) and deep wild if it ends with two wild characters (for example {@code /foo/bar/**}).
{@link ChannelId} can be a template, when a segment contains variable names surrounded bybraces, for example {@code} /foo/var_name}}. Variable names can only be made of characters defined by the {@link Pattern \w} regular expression character class.