Example app for Elixir issue #11815

This showcases the condition where the deps of a loaded dep are still started in a release even though they are not direct deps with the parent.

See elixir-lang/elixir#11815

Explaination

The example here has a dep tree like so:

> a √ % mix deps.tree
a
└── b (../b)
    └── json ~> 1.0 (Hex package)

And :b is only loaded in the :a release (not started). Since :b is only loaded, I expect :json to only load and not start as well.

To test, run:

> release_load_deps √ % cd a 
> a √ % mix do deps.get, release
> a √ % _build/dev/rel/a/bin/a start_iex 
Erlang/OTP 24 [erts-12.3] [source] [64-bit] [smp:10:10] [ds:10:10:10] [async-threads:1]

Interactive Elixir (1.13.4) - press Ctrl+C to exit (type h() ENTER for help)
iex()1> Application.started_applications
[
  {:iex, 'iex', '1.13.4'},
  {:a, 'a', '0.1.0'},
  {:json, 'The First Native Elixir library for JSON encoding and decoding', '1.4.1'},
  {:logger, 'logger', '1.13.4'},
  {:sasl, 'SASL  CXC 138 11', '4.1.2'},
  {:elixir, 'elixir', '1.13.4'},
  {:compiler, 'ERTS  CXC 138 10', '8.1'},
  {:stdlib, 'ERTS  CXC 138 10', '3.17.1'},
  {:kernel, 'ERTS  CXC 138 10', '8.3.1'}
]
iex()2> 

Note :json is has be run.

Also confirm in the generated boot script with:

> a √ % cat _build/dev/rel/a/releases/0.1.0/start.script| grep "start_boot\,\[json"                             main
     {apply,{application,start_boot,[json,permanent]}},