[CLN] resolve circular Period dependency, prepare setup.py
For a long time there has been a comment in `_libs.__init__` saying it would be nice to import `Period` directly but that is not possible due to circular imports.  This resolves that issue.

Also does some cleanup in setup.py, motivated by the goals of a) using `cythonize` and b) implementing test coverage for cython files.  I've gotten those working locally, but they involve big diffs, so this gets some of the easy stuff out of the way.
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/21854?src=pr&el=h1) Report
> Merging [#21854](https://codecov.io/gh/pandas-dev/pandas/pull/21854?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/9d94a95c48b55f517569a00aafb3d378f05bd80f?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/21854/graphs/tree.svg?height=150&width=650&token=eZ4WkYLtcO&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/21854?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #21854      +/-   ##
==========================================
+ Coverage   91.91%   91.91%   +<.01%     
==========================================
  Files         164      164              
  Lines       49987    49988       +1     
==========================================
+ Hits        45947    45948       +1     
  Misses       4040     4040
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.3% <100%> (ø)` | :arrow_up: |
| #single | `42.16% <100%> (ø)` | :arrow_up: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/21854?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/\_libs/tslibs/\_\_init\_\_.py](https://codecov.io/gh/pandas-dev/pandas/pull/21854/diff?src=pr&el=tree#diff-cGFuZGFzL19saWJzL3RzbGlicy9fX2luaXRfXy5weQ==) | `100% <100%> (ø)` | :arrow_up: |
| [pandas/\_libs/\_\_init\_\_.py](https://codecov.io/gh/pandas-dev/pandas/pull/21854/diff?src=pr&el=tree#diff-cGFuZGFzL19saWJzL19faW5pdF9fLnB5) | `100% <100%> (ø)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/21854?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/21854?src=pr&el=footer). Last update [9d94a95...4222187](https://codecov.io/gh/pandas-dev/pandas/pull/21854?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 thanks! happy to take these cleaning PRs!