feat(special):  New way of recognizing a special property - every special should end with a mandatory parenthese that allows for
taking any number of arguments, mimics the form of a function call:
{
  "<special>[/<type>]([<arguments...>])": function(){...}
}

- <special> is the special name, e.g. hub, sig, dom, route;
- <type> is optional, it's a specific type of this special, e.g. a signal special may have types: "start", "stop", "finalize";
- <arguments...> are optional, one or more static values that get passed to the special provider, it is parsed by util.getargs.

This change relieve the original special syntax requirement of must having a type name for each special, e.g. instead of writing hub special as "hub/subscribe(foo/bar)", now it is simply "hub(foo/bar)".

In order to be back-compat with the 2.x (old) special signature, we transform them using `compose.mixin.config.pragmas` into the
new format, thus the old format is *deprecated*.
 - hub:memory/foo/bar => hub/subscribe(foo/bar, memory=true)
 - dom:#foo.bar[name="baz"]/click => dom/click('#foo.bar[name="baz"')

 BREAKING CHANGE: parenthese is now mandatory, without it, the property will be considered as just a regular method.