ENH: df.assign() should accept a quoted name
#### Is your feature request related to a problem?

I believe that `df.assign()` should permit creation of columns using quoted names. 

Note, this feature request is not because I am a masochist and prefer having non-syntactic (spaces, funny characters, etc..) column names, but to maintain consistency across the pandas ecosystem (see additional context).

The code in question:

```
import pandas as pd

df = pd.DataFrame({'temp_c': [17.0, 25.0]},
                                   index=['Portland', 'Berkeley'])

df.assign(temp_f=lambda x: x.temp_c * 9 / 5 + 32)
```

#### Describe the solution you'd like

It should (also?) work like this:

```
df.assign('temp_f'=lambda x: x.temp_c * 9 / 5 + 32)
```

#### API breaking implications

I am not sure what limitations this might have...

#### Describe alternatives you've considered

Suck it up, [take the blue pill](https://en.wikipedia.org/wiki/Red_pill_and_blue_pill) and start using `df.assign(temp_f=...`

#### Additional context

**This mini-discussion can likely be ignored** as I am sure the response to it will be that it's a "personal preference". I certainly do not have the clout to making such statements but I am including them here "for the record" 🙂.

<details>

Data frame columns can be accessed using:

`df['HP']` or `df.HP`

I have always taught my students to do `df['HP']` because it: 

- makes you think about what you're doing more, 
- permits sensible method chaining,
- improves readability and clearly differentiates column names from other actions 
- is overall less error prone

More so, I think it just feels like the "right way to do things". I am dreaming of the day when one day, `df.HP` is deprecated but it sounds like that is not on the horizon...

My favourite (contrived) example of this is if you had a data frame with a column called "mean", `df.mean` gives a somewhat surprising result. 

</details>