PERF: avoid calling .values to know the result dtype in eval()
Currently, the `pd.eval(..)` expression parser calls `.values` several times just to know the dtype of that array. When you actually need to construct this array (which can be costly), we can know this dtype without actually constructing it.

TODO: I need to update the `as_array_dtype` method to ensure it always returns a `np.dtype` (now it can also return an extension dtype)
This pull request is stale because it has been open for thirty days with no activity. Please update or respond to this comment if you're still interested in working on this. @jorisvandenbossche can you merge master and update @jorisvandenbossche can you address comments and rebase This pull request is stale because it has been open for thirty days with no activity. Please [update](https://pandas.pydata.org/pandas-docs/stable/development/contributing.html#updating-your-pull-request) and respond to this comment if you're still interested in working on this. prob a reasonable change but closing as stale