Refactor

Started on settings and DSL's, here's 3 integrations -- this is just an example to get some crib and get back to work.

I tried picking 3 different integrations with different needs:

  - amplitude: the most simple one.
  - churnbee: requires `userId`
  - mixpanel: requires custom validation for `apiKey`.

Let me know what you think!, here are the relevant issues:

  - https://github.com/segmentio/integration/pull/25
  - https://github.com/segmentio/integration-tester/pull/19

> note: tests fail on travis because the tester is changed a bit, but tests for the 3 integrations are passing.

cc @calvinfo @gjohnson 
haha two different conversations running around! yeah, I'm okay with either. the consistency with `.error()` is nice since we'll have to have that one anyway for the async stuff