text: Title: Fix type hints for keyboard builders
  Body: ### Problem
  
  Type hints for `InlineKeyboardBuilder` and `ReplyKeyboardBuilder` `.as_markup()` method are generic. So now it's `Union[InlinekeyboardMarkup, ReplyKeyboardMarkup]`.
  
  It would be better to make `InlineKeybordBuilder.as_markup` return type be `InlineKeyboardMarkup` and similarly for the `ReplyKeyboardBuilder` class
  
  ### Possible solution
  
  Separate type hints for builder classes
  
  ### Alternatives
  
  _No response_
  
  ### Code example
  
  ```python3
  inline_keyboard = (
      InlineKeyboardBuilder()
      .add(InlineKeyboardButton(text="Hello World", url="https://google.com"))
      .as_markup()
  )  # type is InlineKeyboardMarkup | ReplyKeyboardMarkup
  
  # Keyboard came from InlineKeyboardBuilder but has generic type
  # so linter complains about it
  # "ReplyKeyboardMarkup" is incompatible with "InlineKeyboardMarkup"
  await bot.edit_message_reply_markup(0, 0, reply_markup=inline_keyboard)
  ```
  
  
  ### Additional information
  
  _No response_