Refactor to use Marionette modules.

This app is the perfect candidate for composite application architecture
using modules to wrap block of isolated functionality. Also closely
mirrors the structure of Elixir/Erlang architecture patterns.