TST: Converting to Pytest Idiom
Our testing framework is a literal hodgepodge of different 3rd-party framework standards (i.e. `nosetest`, `pytest`, `unittest`) that needs to be cleaned up.

A couple of points are clear:
* Use `assert` instead of `self.assert*...`
* When possible, replace `for` loops with `pytest.mark.parametrize`
* All new test classes should inherit from `object` instead of `tm.TestCase`

However, we also have this massive testing module helper `testing.py` that is populated with tons of useful comparison methods as well as wrappers around basic `assert` methods that are used inconsistently throughout the code-base.  <b>Thus, the question is whether or not we want to keep using those OR remove them entirely and replace them with basic `assert` statements</b>.

The advantage with using `tm.assert` statements is that they come directly with error messages instead of an empty `AssertionError`, which is what I don't like about raw `assert` statements that are considered more idiomatic with `pytest`.

Thus, it's a question of greater clarity (i.e. our error messages will be more useful by default when we get test failures) vs. idiomatic (raw `assert` with no wrapping is the idiomatic way to go but risks presenting less helpful failure messages).

<strike>Another point I wanted to bring up is with regards to the introduction of decorators in #15952 to capture `stdout` and `stderr`.  `pytest` has fixtures to capture those, but incorporating it into the code-base is very difficult due to our heavy reliance still on `unittest.TestCase`, which causes incorporation to fail.  The question is: <b>do we eventually want to use the `pytest` fixture or continue using the decorator?</b></strike>

Thoughts?

<hr>

From the discussion that follows, here are the functions that should be removed and replaced:

- [x] `self (tm).assertRaises` --> `pytest.raises`
- [x] (<b>NO ACTION</b>) `self (tm).assertRaisesRegexp` -->
~~~python
with pytest.raises(cls) as exc_info:
   ...
exc_info.match(regex)
~~~
Per discussion in <a href="https://github.com/pandas-dev/pandas/pull/16089#issuecomment-296316294">#16089 (comment)</a>, we are leaving as is.
- [x] `self.assert*` (examples follow)
  * `self.assertIs`
  * `self.assertEqual`
  * ...and many others
- [x] `self.assert_*` (examples follow)
  * `self.assert_numpy_array_equal`
  * `self.assert_series_equal`
  * `self.assert_frame_equal`
  * `self.assert_index_equal`
  * ...and many others
- [x] `tm.assert_equal`
- [x] `tm.assertIs(Not)`
- [x] `tm.assert(Not)In`
- [x] `tm.assertIs(Not)None`
- [x] `tm.assert(Not)IsInstance`