Uninteded cast from int to float in pd.crosstab with different indexes
#### Code Sample, a copy-pastable example if possible

```python
In [2]: pd.crosstab(pd.Series([1,2,3]), pd.Series([1,2]))
Out[2]: 
col_0  1.0  2.0
row_0          
1        1    0
2        0    1
```
#### Problem description

The shorter series gets casted to float before the computation, which one would not expect, given that index elements with at least one missing value are discarded in the computation..

#### Expected Output
The same as

```python
In [3]: pd.crosstab(pd.Series([1,2]), pd.Series([1,2]))
Out[3]: 
col_0  1  2
row_0      
1      1  0
2      0  1
```

#### Output of ``pd.show_versions()``

<details>
INSTALLED VERSIONS
------------------
commit: ea487fc9b197285f25b066450c46fc456db09e2a
python: 3.5.3.final.0
python-bits: 64
OS: Linux
OS-release: 4.9.0-3-amd64
machine: x86_64
processor: 
byteorder: little
LC_ALL: None
LANG: it_IT.UTF-8
LOCALE: it_IT.UTF-8

pandas: 0.21.0.dev+258.gea487fc9b.dirty
pytest: 3.0.6
pip: 9.0.1
setuptools: None
Cython: 0.25.2
numpy: 1.12.1
scipy: 0.19.0
xarray: None
IPython: 5.1.0.dev
sphinx: 1.5.6
patsy: 0.4.1
dateutil: 2.6.0
pytz: 2017.2
blosc: None
bottleneck: 1.2.1
tables: 3.3.0
numexpr: 2.6.1
feather: 0.3.1
matplotlib: 2.0.2
openpyxl: None
xlrd: 1.0.0
xlwt: 1.1.2
xlsxwriter: 0.9.6
lxml: None
bs4: 4.5.3
html5lib: 0.999999999
sqlalchemy: 1.0.15
pymysql: None
psycopg2: None
jinja2: 2.9.6
s3fs: None
pandas_gbq: None
pandas_datareader: 0.2.1
</details>
