text: Title: Virtual table names are incorrectly escaped
  Body: **Describe the bug**
  When virtual tables are added/created, they are defined as:
  ```
  table_name = escape(uri)
  self._cursor.execute(
              f'CREATE VIRTUAL TABLE "{table_name}" USING {adapter.__name__}({formatted_args})',
          )
  ```
  see: https://github.com/betodealmeida/shillelagh/blob/e379e8ac0b3dc2f45217be5084b01934c8a489d3/src/shillelagh/backends/apsw/db.py#L294
  
  In particular, the table name is put in double quotes.
  The escape method applied before, replaces _single_ quotes rather than _double_ quotes:
  ```
  def escape(value: str) -> str:
      """Escape single quotes."""
      return value.replace("'", "''")
  ```
  see: https://github.com/betodealmeida/shillelagh/blob/e379e8ac0b3dc2f45217be5084b01934c8a489d3/src/shillelagh/lib.py#L224
  
  **Expected behavior**
  As the table name is quotes in double quotes, double quotes should be escaped in the table name.
  
  There are multiple ways to fix this:
  
  1. Switch `escape` to replace double quotes. Likely not desired as the method seems to be used in other places.
  2. Quote the table name in single quotes when creating. Is this breaking anything existing?
  3. Ad-hoc escape the double quotes in the table name (likely best option if the impact of 2 can't be assessed).
  
  Happy to send a pull request.