Add a simple module for compiling Elixir source code.
Fix a pattern match failure that could happen in the Erlang library.

The first argument to the recipe can be a list with multiple
elements if the `headers` option is populated, so we need to
handle that case gracefully.
Allow specifying the output directory in the Erlang/Elixir libraries.
Fix the "recipe changed directory" message.

The old message implied that changing directory is OK as long
as it's changed back, which is not the case. The error is meant
to make the user aware that doing so at all is not OK.