[Experimental][WiP] Trace macro in a shell

Adding trace macro supporting debugging in an elixir way.

Examples of use: https://gist.github.com/liveforeverx/fc6fa0b8b0cd69a7ab65

Supported cases at the moment:
1) Module (trace all functions in a module)
2) Module.function (trace all module.function with any arity)
3) module.function/arity
4) module.function(args...) 
5) module.function(args...) when conditions... (mostly)

In the end implementation will be supported:
1) debug all functions in module(with possibility to choose local or exported) -> done
2) Forms, like: :lists.seq(1, _), all matching forms, like MyModule.myfun({foo,bar, {[1,2,3]}}, _)
and the when forms: MyModule.myfun(a, b) when a > 1 or b < 10 -> done
3) options, with possibility to specify the tracing processes.
4) easy form of tracing sending/receiving messages from and to a process

What are you think about having it in elixir?

I'll be grateful for any feedback.