ENH: Allow update to use an on keyword. Allow one to many update.
Scratch an itch I had. Use case

```
df = DataFrame([[np.nan, 'A'],
                [np.nan, 'A'],
                [np.nan, 'A'],
                [1.5, 'B'],
                [2.2, 'C'],
                [3.1, 'C'],
                [1.2,' B']], columns=['number', 'name'])

df2 = pd.DataFrame([[3.5, 'A']], columns=['number', 'name'])

df.update(df2, on='name')
```

The tests fail though because when you reset the index, the column order is not preserved and `self = self[col_order]` doesn't seem to do what I'd expect it to do. Maybe there's a better way to go about doing all of this?

Also, I dropped reindex_like because you were just iterating through columns of NaNs in `other`.

can you put the output you are expecting up as well?
 NaNs "updated" to 3.5.
 ```
In [10]: df.loc[df.name.isin(df2.name)] = df2

In [11]: df
Out[11]: 
   number name
0     3.5    A
1     3.5    A
2     3.5    A
3     1.5    B
4     2.2    C
5     3.1    C
6     1.2    B
```
 This is just a toy case. What if on is multiple columns? This also only updates where there are NaNs in df. There might be overlap in df and df2 and this sanity checks that.
 true.....`update` really needs to be rewritten actually (and pushed into internals).....but that's a bit more drastic....

shouldn't you merge these then set?
 Sounds like half a dozen of one to me... Merge, conditionally set `_x` for each column then delete `_y` and rename everything? 
 moving a bit away from adding things to `.update` and stale
