Merge pull request #1830 from jwarwick/behaviour_docs

Doc updates for Application.Behaviour and Behaviour
Deprecate x in y inside matches
Ensure Enum.member? uses match (===)
Update CHANGELOG
remove whitespace
Updated Code docs
Merge pull request #1835 from jwarwick/code_docs

Updated Code docs
Add Macro.decompose_call/1
fix wrong error message for `nil.func()` call

The expected behavior for `nil.func()` should be:

    iex(1)> nil.test()
    ** (UndefinedFunctionError) undefined function: nil.test/0
       nil.test()

Also via cli `elixir -e`:

     $ elixir -e 'nil.test()'
     ** (UndefinedFunctionError) undefined function: nil.test/0
     nil.test()
     ....

Undefined function calls behave like:

    iex(1)> hello()
    ** (RuntimeError) undefined function: hello/0
Merge pull request #1834 from tonini/fix-wrong-error-message

fix wrong error message for `nil.func()` call
Add Kernel.LexicalTracker
Move lexical tracker to scope
Add warnings for unused aliases
Add tests for LexicalTracker
Simplify current module macro handling
Avoid interpolation which would convert char lists twice
Do not write manifest down if there was a compilation error, closes #1833
renamed Macro.decompose_call/1 to Macro.split_call/1
Updated documentation for Macro.split_call/1
Add typespecs and to_string conversion to some IO APIs