Remove duplicated logic from period_helper
Following on the heels of #19534, this removes a bunch of duplicate logic from period_helper and uses the implementations in np_datetime and ccalendar instead.  A handful of functions are moved directly into period, but for the most part it's deletion.

- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19540?src=pr&el=h1) Report
> Merging [#19540](https://codecov.io/gh/pandas-dev/pandas/pull/19540?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/50528421ae79b27a26b32ba715b17271c8dfda7e?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

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

```diff
@@           Coverage Diff           @@
##           master   #19540   +/-   ##
=======================================
  Coverage   91.62%   91.62%           
=======================================
  Files         150      150           
  Lines       48773    48773           
=======================================
  Hits        44687    44687           
  Misses       4086     4086
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `89.99% <ø> (ø)` | :arrow_up: |
| #single | `41.74% <ø> (ø)` | :arrow_up: |


------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19540?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/19540?src=pr&el=footer). Last update [5052842...9d749d8](https://codecov.io/gh/pandas-dev/pandas/pull/19540?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 No change against master (running against ~0.21.0 now)

```
asv continuous -f 1.1 -E virtualenv master HEAD -b period
[...]
    before     after       ratio
  [93c86aa1] [9e88f869]
+   60.09μs    68.30μs      1.14  period.PeriodUnaryMethods.time_to_timestamp('M')
+   16.56ms    18.38ms      1.11  period.DataFramePeriodColumn.time_setitem_period_column
-   19.84μs    17.81μs      0.90  period.PeriodUnaryMethods.time_asfreq('M')
-  971.81ns   868.77ns      0.89  period.PeriodProperties.time_property('M', 'daysinmonth')
-   21.83μs    18.90μs      0.87  period.PeriodUnaryMethods.time_now('M')

  [93c86aa1] [9e88f869]
+  851.04ns   968.69ns      1.14  period.PeriodProperties.time_property('M', 'quarter')
-    1.03μs   874.42ns      0.85  period.PeriodProperties.time_property('M', 'dayofyear')

  [93c86aa1] [9e88f869]
+  110.80μs   166.18μs      1.50  period.PeriodIndexConstructor.time_from_date_range('D')

  [93c86aa1] [9e88f869]
+  151.88μs   244.22μs      1.61  period.Indexing.time_intersection
-    1.01μs   842.80ns      0.83  period.PeriodProperties.time_property('min', 'year')
``` Against ~0.21

```
asv continuous -f 1.1 -E virtualenv 99d384d4f7ef6e2b6cb5a4eebea127e8bddf521b HEAD -b period
[...]
    before     after       ratio
  [99d384d4] [9e88f869]
-    3.42ms     2.82ms      0.83  period.PeriodIndexConstructor.time_from_pydatetime('D')
-   21.24ms    16.26ms      0.77  period.DataFramePeriodColumn.time_setitem_period_column
-  263.50μs   150.22μs      0.57  period.Indexing.time_intersection
-   13.36μs     7.34μs      0.55  period.Indexing.time_get_loc

    before     after       ratio
  [99d384d4] [9e88f869]
+  875.00ns   979.92ns      1.12  period.PeriodProperties.time_property('min', 'quarter')
-   21.69μs    19.19μs      0.88  period.PeriodUnaryMethods.time_now('M')
-    3.38ms     2.80ms      0.83  period.PeriodIndexConstructor.time_from_pydatetime('D')
-   21.53ms    16.57ms      0.77  period.DataFramePeriodColumn.time_setitem_period_column
``` rebase as we merged the get_day function. lgtm otherwise. Once this goes in I can rebase #19550, then after that we'll get rid of date_info and just use pandas_datetimestruct directly. thanks!