[WIP] Downstream changes and extract email sender domain

I'm sick of having a private version of Samson. This is an attempt to bring anything from our private version of Samson which should be in the public version and extract a few extra configuration options to ENV variables

### TODO
- [ ] Squash the history on this branch

cc /@zendesk/samson
@princemaple @steved555 where do you think it would be best to define this conditional logic? I'm thinking something like:
```ruby
def github_auth_enabled?
  ENV["GITHUB_CLIENT_ID"] && ENV["GITHUB_SECRET"]
end
def google_auth_enabled?
  ENV["GOOGLE_CLIENT_ID"] && ENV["GOOGLE_CLIENT_SECRET"]
end
```
Does Omniauth have any magic to do this.