Parsing expressions into failover predicates

* Failover predicates now can be constructed from mini language

Examples:

* RequestMethodEq("GET") - allows to failover only get requests
* IsNetworkError - allows to failover on errors
* RequestMethodEq("GET") && AttemptsLe(2) && (IsNetworkError || ResponseCodeEq(408))
  This predicate allows failover for GET requests with maximum 2 attempts with failover
  triggered on network errors or when upstream returns special http response code 408.