Add support for a module to define function names aliases.

If the module has the `__func_alias__` attribute, it must be a dictionary mapping in the form of(key -> value):
```
    <real-func-name> -> <desired-func-name>
```

It default's of course to the found callable attribute name if no alias is defined.
No more need to workaround for built-in shadowing. Make use of module function aliases.