pandas.*.sample may return empty objects if frac <= 2^{-axis_length}
#### A small, complete example of the issue

``` python
import pandas as pd

axis_length = 1
df = pd.Series([0])
df.sample(frac=2**(-axis_length))

Series([], dtype: int64)

```
#### Expected Output

Series([1], dtype: int64)
#### Why?

I tried to sample fractions of groups, some groups containted only one entry and were not returned in the sampled frame ( I used `groupby(key).apply(lambda x:x.sample)`).
A potential fix may be easy: in generic.py line 2634 might be changed from

``` python
n = int(round(frac * axis_length))
```

to

``` python
n = max(int(round(frac * axis_length)),1)
```

If this behaviour is not desired, maybe one could add to the API some keyword like, min_sample_size
#### Further Remarks

The example can be generalized using np.arange(axis_length). The bound $2^{-axis_length}$ seems to be hard. Increasing the value would return at least one sample entry.

Edit: Depending on the discussion, I'd love to provide a pull request by myself. I think, it's a good start to support pandas and it fits my skill level
#### Output of `pd.show_versions()`

Series([], dtype: int64)
<details>
# Paste the output here
## INSTALLED VERSIONS

commit: None
python: 3.5.1.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 60 Stepping 3, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None

pandas: 0.19.0
nose: 1.3.7
pip: 8.1.2
setuptools: 27.2.0
Cython: 0.24.1
numpy: 1.11.2
scipy: 0.18.1
statsmodels: 0.6.1
xarray: None
IPython: 5.1.0
sphinx: 1.3.1
patsy: 0.4.1
dateutil: 2.5.3
pytz: 2016.7
blosc: None
bottleneck: 1.1.0
tables: 3.2.2
numexpr: 2.6.1
matplotlib: 1.5.1
openpyxl: 2.4.0
xlrd: 1.0.0
xlwt: 1.1.2
xlsxwriter: 0.9.3
lxml: 3.6.4
bs4: 4.5.1
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 1.1.0
pymysql: None
psycopg2: None
jinja2: 2.8
boto: 2.42.0
pandas_datareader: None
</details>
