text: Title: Explicit static directive for serving file or dir
  Body: See #2132
  
  ```python
  app.static('/', './resources/web', as="dir")
  app.static('/', './resources/web/example.html', as="file")
  ```
  
  With an explicit kwarg, we would not need to run `path.isfile`. This is not really new behavior. If Sanic 20.12 is not functioning this way, I think that is more a problem on the earlier version than with the current.
  
  ---
  
  A bit of behind the scenes info...
  
  Let's look at what these two are doing:
  
  ```python
  app.static("/", "./resources/web")
  # Sanic checks this, sees that it is not a file and then converts to:
  # "/<__file_uri__:path>"
  # meaning that it will look for anything that matches using the `path` param type
  
  app.static('/', './resources/web/example.html')
  # If this is indeed a file, Sanic knows that you meant for an explicit path "/"
  # There is no ambiguity, and the path does not need to be altered
  # If the file does not exist, then like the first example, it tries to convert it to a `path` type
  # But, since you already have a path expansion on that base path, there is now ambiguity
  # and Sanic raises RouteExists
  ```
  
  __Originally posted by @ahopkins in https://github.com/sanic-org/sanic/issues/2132#issuecomment-839477709__