Decorator has 2 usages:
    @clize
    def decorated(params):
       ...
    optional parameters aliases are autogenerated, conflicts are silently ignored.

    @clize(aliases)
    def decorated(params)
       ...
    where aliases is a dictionary, key=python parameter of decorated function,
    value=tuple of aliases or single alias.

def clize(*args, **kwargs):
    """
    Decorator has 2 usages:
    @clize
    def decorated(params):
       ...
    optional parameters aliases are autogenerated, conflicts are silently ignored.

    @clize(aliases)
    def decorated(params)
       ...
    where aliases is a dictionary, key=python parameter of decorated function,
    value=tuple of aliases or single alias.
    """

    kwargs = dict((k.lower(), v) for k, v in iteritems(kwargs))

    class mycli(Clizer):
        options_aliases = kwargs

    mycli.check_deco_parameters(*args, **kwargs)

    def runner(function):
        return mycli(function) if DELAY_EXECUTION else mycli(function)()

    if args:
        return runner(args[0])
    else:
        return runner