Separate _TSObject into conversion
This is what we've been building towards folks.  `convert_to_tsobject`, `convert_str_to_tsobject`, and `convert_datetime_to_tsobject` are moved to `tslibs.conversion`.  Concerns regarding `_TSObjects`s can be considered separated.

This isn't quite cut/paste:
- `convert_to_tsobject` calls `is_timestamp` which is not available in the namespace.  Similarly `_localize_pydatetime` checks `isinstance(dt, Timestamp`).  So this re-implements private versions:
- `conversion._is_timestamp` checks that its input has type `datetime`.  IIUC correctly this check should be as performant as `tslib.is_timestamp`.  (moderate sized "if")
- `conversion._localize_pydatetime` includes small optimizations that are available because we know the context in which it is being called.  Specifically, 1) it can skip the `Timestamp` case since any nanos get dropped in `pydatetime_to_dt64`, and 2) the `tz` arg is typed as a `tzinfo` object, 3) it skips unnecessary `None` check.

Other notes:
- `_get_datetime64_nanos` is called by `convert_to_tsobject`, so also had to be moved.  It fits well with the "conversion" theme.
