ENH: let get_dummies take a DataFrame

Closes https://github.com/pydata/pandas/issues/8133

Thoughts? I encode every column with `object` dtype. You can control the ones that get encoded with `categorical_variables`. The encoded columns are `concat`ed to the columns that don't need encoding.

`prefix` and `prefix_sep` can be passed as a string, list, or dict mapping column names to strs.

```python
In [1]: from pandas import *

In [2]: df = DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
                        'C': [1, 2, 3]})

In [3]: df
Out[3]: 
   A  B  C
0  a  b  1
1  b  a  2
2  a  c  3

In [4]: get_dummies(df)
Out[4]: 
   C  A_a  A_b  B_a  B_b  B_c
0  1    1    0    0    1    0
1  2    0    1    1    0    0
2  3    1    0    0    0    1

In [5]: get_dummies(df, prefix=['from_A', 'from_B'])
Out[5]: 
   C  from_A_a  from_A_b  from_B_a  from_B_b  from_B_c
0  1         1         0         0         1         0
1  2         0         1         1         0         0
2  3         1         0         0         0         1

In [6]: get_dummies(df, prefix={"A": 'from_A', "B": 'from_B'})
Out[6]: 
   C  from_A_a  from_A_b  from_B_a  from_B_b  from_B_c
0  1         1         0         0         1         0
1  2         0         1         1         0         0
2  3         1         0         0         0         1

In [7]: get_dummies(df, prefix_sep='.')
Out[7]: 
   C  A.a  A.b  B.a  B.b  B.c
0  1    1    0    0    1    0
1  2    0    1    1    0    0
2  3    1    0    0    0    1

In [8]: get_dummies(df, prefix_sep='.', categorical_variables=['A'])
Out[8]: 
   B  C  A.a  A.b
0  b  1    1    0
1  a  2    0    1
2  c  3    1    0
```
Now, with a Series, the nan column 'looks' like `NaN` in the repr:
```
In [54]: pd.get_dummies(ss, dummy_na=True)
Out[54]:
    a    b   NaN
0    1    0    0
1    0    1    0
2    1    0    0
3    0    0    1
```
So my first thought was: shouldn't this break? But it appeared the `NaN` was not a string but a real `nan` value. 
But apart from that, to keep it 'visually' the same as the Series case, maybe use `A_NaN` and `B_NaN` ?