Unexpected Results with Integer Arithmetic
#### Code Sample, a copy-pastable example if possible

```python
import pandas as pd
import numpy as np

df = pd.DataFrame({'x': range(7)}, dtype = np.uint8)
df['y'] = 50706 + 9993 * (df.x - 3)
df['yTrue'] = 50706 + 9993 * (df.x - 3.)
print(df)
print(f'dtype of y is {df.y.dtype}')
```
#### Problem description

If you run the above code, you get:

```
   x      y    yTrue
0  0  23031  20727.0
1  1  33024  30720.0
2  2  43017  40713.0
3  3  50706  50706.0
4  4  60699  60699.0
5  5   5156  70692.0
6  6  15149  80685.0
dtype of y is uint16
```

This isn't necessarily a bug, but some unexpected behavior.  It looks like column y is being computed using 16-bit unsigned arithmetic.  I could understand if it were computed in unsigned 8-bit arithmetic, since x is a uint8 and y is a function of x.  I'm just curious why everything is being promoted to a uint16, but no further.  If you're going to implicitly convert integers for arithmetic, I think it would make more sense to promote them to the default int/word size.  But that's just my opinion.

Interestingly, the same thing happens in numpy - which is probably why it happens in pandas:

```python
50706 + 9993 * (np.arange(7, dtype = np.uint8) - 3)
Out[6]: array([23031, 33024, 43017, 50706, 60699,  5156, 15149], dtype=uint16)
```

On the other hand, a simple C++ program yields my expected results, at least on my machine.

```c++
 #include <iostream>
 #include <cstdint>

 int main()
 {
     for(std::uint8_t x = 0; x < 7; ++x)
         std::cout << 50706 + 9993 * (x - 3) << "\t ("
                   << sizeof(50706 + 9993 * (x - 3)) << " bytes)\n";

     return 0;
 }
```

Like I said, it's not necessarily a bug; just... not what I expected.

#### Expected Output

Column yTrue in sample output

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

<details>
INSTALLED VERSIONS
------------------
commit: None
python: 3.6.5.final.0
python-bits: 64
OS: Darwin
OS-release: 16.7.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.23.0
pytest: 3.5.1
pip: 10.0.1
setuptools: 39.1.0
Cython: 0.28.2
numpy: 1.14.3
scipy: 1.1.0
pyarrow: None
xarray: None
IPython: 6.4.0
sphinx: 1.7.4
patsy: 0.5.0
dateutil: 2.7.3
pytz: 2018.4
blosc: None
bottleneck: 1.2.1
tables: 3.4.3
numexpr: 2.6.5
feather: None
matplotlib: 2.2.2
openpyxl: 2.5.3
xlrd: 1.1.0
xlwt: 1.2.0
xlsxwriter: 1.0.4
lxml: 4.2.1
bs4: 4.6.0
html5lib: 1.0.1
sqlalchemy: 1.2.7
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None</details>
