ENH: GH12042 Add parameter `drop_first` to get_dummies to get n-1 variables out of n levels.
closes #12042 

Some times it's useful to only accept n-1 variables out of n categorical levels.

@jreback it might be tough it find a better name than `drop_first`, though agreed we usually go with `keep_` parameters...

We should define what happens when `drop_first` is True and there's a single level. Right now it fails with an IndexError I think (haven't tested). I'm not sure whether we should raise or not. Any idea what R does?
 Looks like R raises

``` R
> year <- c(1, 1, 1, 1)
> year.f
[1] 1 2 3 4 5
Levels: 1 2 3 4 5
> year.f <- factor(year)
> model.matrix(~year.f)
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
  contrasts can be applied only to factors with 2 or more levels
```

although since pandas is more of a data manipulation library than a stats library, we might want to not raise an error. That said, I'm not sure what we'd return if we do catch the error, the single level or no levels at all?
 I would raise a `ValueError` that doesn't really make any sense.
 When `drop_first` is turned on and there is only one level, currently it will return an empty DataFrame:

``` Python
In [1]: import pandas as pd

In [2]: pd.get_dummies(pd.DataFrame(list('aaaaa')), drop_first=True)
Out[2]:
Empty DataFrame
Columns: []
Index: [0, 1, 2, 3, 4]
```

By doing this I think that the user doesn't have to check the levels contained in a column before using `drop_first`.
Otherwise if we raise an error it will be the caller's responsibility to check the levels of the columns they want to get dummy from. It may be painful to do this.

If you guys think raise an error is preferred, please comment and I will change the behavior 
 @TomAugspurger any comments?
 Just the minor doc typo. Looks good otherwise.
 pls
squash when fixed 
 @BranYang did you mean to close this?
 @jreback I found that it's too messy when I try to squash my commits. So I just revert to a previous state and re-commit it.
 that's fine. I will take care on merge anyhow.
 @jreback pls kindly review the tests..
 thanks @BranYang 
