ENH: allow axis argument to append / move append code to generic.py (GH8295)
closes #8295
- [x] Extract `append` method in `frame.py` into `generic.py` 
  - I left the original code just commented.
- [x] Extract test cases in `test_frame.py` into `test_generic.py` 
- [x] Extract test cases in `test_series.py` into `test_generic.py`
- [x] Specific test case for testing `axis=1` in `test_generic.py`
- [x] Generic method `append` in `generic.py`
- [x] `NotImeplementedError` for `Panel`
- [ ] Docstring for generic `append`
- [ ] Release note
- [ ] Documentation
- [ ] CI pass

One more thing, could `Series.append` use `axis=1` as well ?

``` python
pd.Series([1,2,3]).append(pd.Series(['a','b','c']), axis=1)

   0  1
0  1  a
1  2  b
2  3  c

# just like below
# pd.concat((pd.Series([1,2,3]), pd.Series(['a','b','c'])), axis=1)
```

It would be awesome if I could get your guidance to close this issue under the project's convention. Thank you ! 

@htkm the answer to your question is yes, `Series.append` CAN take `axis=1` to create a frame. Though that would need some separate tests.
 I made some changes to follow your advice. And for generic `DataFrame.append` with `axis=1`, I found something interesting when I do the same thing by `pd.concat` with `axis=1`.

``` python
df = pd.DataFrame(np.random.randn(2,2), columns=list('AB'))
sr = pd.Series(range(2), index=[0,10], name='SR')

pd.concat((df, sr), axis=1)
           A         B  SR
0   0.376365 -0.830094   0
1   0.765837  1.001402 NaN
10       NaN       NaN   1

df.append(sr.to_frame(), axis=1)
           A         B  SR
0   0.376365 -0.830094   0
1   0.765837  1.001402 NaN
10       NaN       NaN   1

df.append(sr, axis=1)
           A         B   0  10   A   B   0  10
0   0.376365 -0.830094 NaN NaN NaN NaN NaN NaN
1   0.765837  1.001402 NaN NaN NaN NaN NaN NaN
SR       NaN       NaN NaN NaN NaN NaN   0   1
```

I think `df.append(sr, axis=1)` seems to return unexpected results. Do you think `append` method in `generic.py` should be modified to make it work like `pd.concat` ? Thank you.
 @htkm I think you are right, the last `df.append(sr,axis=1)` should be equivalent to `df.append(sr.to_frame(),axis=1)`
 can you rebase this on master and see where it is?
 closing pls reopen if/when updated
