Email signup component refactor

This pull request draws out the classes used in the email signup component in to a separate config object. It also adds some extra checks to see if the component can run and draws these out in to an internal `canRun()` function.

These changes also address some outside edge cases where an error could be generated under the right circumstances (eg: If the component is active and the play app generates the right markup but no email `listId` was found). cc @phamann here.

This work will be continued by making use of the `component.js` module ***if*** the email signup is picked up for production after this test is over.