Change a lot of things

These changes are the culmination of many changes made while using Stoplight internally at OrgSync. From a high level, here's what changed:

- Data stores and notifiers can be configured on a per-stoplight basis. This allows stoplights to use stoplights internally.

- Stoplights use stoplights internally to wrap calls to data stores and notifiers. This means they gracefully handle either going down.

- Data stores only store failures and states. Also failures are stored in a ring buffer. This drastically reduces the amount of data stored.

- Stoplights will use the fallback (if it's given) when they fail while they're green. This means they won't re-raise exceptions if you provide a fallback.

- Stoplights pass the error to their notifiers when transitioning from green to red.