TST: GH4604, reindexing with a method of 'ffill' gives incorrect results

BUG/CLN: (GH4604) Refactor Series.reindex to core/generic.py allow method= in reindexing
  on a Series to work

API/CLN: GH4604 Infer and downcast dtype if appropriate on ffill/bfill
  this is for consistency when doing: df.reindex().ffill() and df.reindex(method='ffill')

CLN: allow backfill/pad/interpolate to operate on integers (by float conversion)
     provide downcasting back to original dtype where needed core.internals.interpolate

ENH: provide core.index.identical method to compare values and attributes similar to .equals

API: changed back to pre-GH3482 where a reindex with no args will by default copy
BUG: GH3317 Fix frequency inference to be automatic in a DatetimeIndex if freq is not specified during _ensure_index

PERF: remove automatic downcasting, instead do on-demand via 'downcast=infer'

TST: fix up failing tests

CLN: reindex/fill in internals moved to core/internals/Block/reindex_items_from

PERF: don't automatically downcast with a float block

BUG: GH3317 reverse prior fix in tseries/offsets, to change slightly the multi reindex

TST: identical index tests

BUG: GH4618 provide automatic downcasting on a reindexed with method Series
     (in this case a shifted boolean then filled series)
Merge pull request #4610 from jreback/series_reindex

CLN: refactor Series.reindex to core/generic