Introduce `:plain`, `:html`, and `:body` render options.

This is a continuation from #12374, with slight modification since the discussion went a bit off-topic.

-----

Per discussion, `render :text` misdirect people to think that it would render content with `text/plain` MIME type. However, `render :text` actually sets the response body directly, and inherits the default response MIME type, which is `text/html`.

In order to reduce confusion, we're introducing 3 more render format to `render`:

```ruby
render html: '<strong>HTML String</strong>'.html_safe # render with `text/html` MIME type.

render plain: 'plain text' # render with `text/plain` MIME type.

render body: 'raw body' # render raw content, does not set content type.
```

We want to phrase out the usage of `render :text`, to reduce the confusion in the future. There were some discussion about deprecate `render :text`, but we haven't come into a conclusion yet. So, we'll consider doing that before the next major release.

Fixes #12374