Add application environment and events

This PR adds the necessary infrastructure for the following events:

* peridot.start - event for defining additional inputs
* peridot.preExecute - event for getting the runner, config, factory, AND input :)