Generic support

Although a bit crude at the moment, a typeclass is provided to support any circuit breakers as long as they can obey the TalosCircuitBreaker definition.

More or less you can do

    import talos.events.TalosEvents
    import talos.circuitbreakers._

    type Id[A] = A

    val dummyCircuitBreaker = ()
    val dummySubscriber = ()

    implicit val dummyTalosCircuitBreaker = new TalosCircuitBreaker[Unit, Unit, Id] {
      override def name: String = "dummy"

      override def protect[A](task: Id[A]): Id[A] = task

      override def circuitBreaker: Id[Unit] = ()

      override def protectWithFallback[A, E](task: Id[A], fallback: Id[E]): Id[Either[E, A]] = Right(task)

      override def eventBus: EventBus[Unit] = ???
    }

    val circuitBreaker: TalosCircuitBreaker[Unit, Unit, Id] = Talos.circuitBreaker[Unit, Unit, Id]