Add buddy check system

This adds a feature to Samson that can make samson require a Buddy for certain stages. The use case here is when deploying to production stages you want to have at least 2 developers know what code is being shipped.

/cc @zendesk/samson @jwswj @pswadi-zendesk 

### TODO

- [x] fix old tests
- [ ] add new tests
- [x] add email notification for `bypass`

### RISKS
- still using the confirmation setting on stages to determine whether a stage needs buddy check.
- If this branch gets merged, the measurement of the deployment duration needs to be fixed.
hehe.  Actually, the addition of the extra "pending" was originally done by you in commit ebdbd4145af6e4312c0f9c1cfbeade26f417df80 - your first commit on this branch.  So I just kept it, and then added the if/else when I added the BuddyCheck.enabled? check.

I *assumed* the includes().where() needed that order, but on review realize it doesn't.  So I've reverted self.active() to what it was before you made that first change.

The only question I would have is whether you meant to add "pending" to some state other than *active* ?