Defining __MODULE__.Something in a nested defmodule would fail
to compile. This commit address this:
defmodule Foo do
defmodule __MODULE__.Bar do
__MODULE__ == Elixir.Foo.Bar
end
end
Since `__MODULE__` expands to a fully qualified name `Elixir.Foo`,
the nested module must then be `Elixir.Foo.Bar`. This commit also
fixes an alias leakage that would happen under such scenarios.
Another possible interpretation would be for it to return `Foo.Foo.Bar`.
However, that would mean we would not be able to access the module
right below its definition using `__MODULE__.Bar`, which means its
`Foo.Foo.Bar` would be the incorrect choice.