text: Title: [FEATURE] Filters for hooks
  Body: Continuation of #1673 
  
  Extend the hook system to allow users to specify the scope of hook functions through a decorator instead of implementing conditions inside the hook function body. This would simplify the filtering process and make it easier to use.
  
  ```python
  # Filter via custom function
  def select_operations(context):
      # Or any complex logic here
      return context.operation.verbose_name == "PATCH /users/{user_id}/"
      
  
  # Apply hook only if `select_operations` returned `True`
  @schemathesis.hook.apply_to(select_operations)
  def filter_query(context, query):
      return query["key"] != "42"
  
  
  # Apply hook to everything except `GET /users/{user_id}/`
  @schemathesis.hook.skip_for(method="GET", path="/users/{user_id}/")
  def map_path_parameters(context, path_parameters):
      path_parameters["user_id"] = 42
      return path_parameters
  
  
  # Simple filter hook for all operations
  @schemathesis.hook
  def filter_query(context, query):
      return query["key"] != "42"
  ```