Establish a PandasBaseObject for all pandas objects
`generic.PandasObject` is not it since it applies to data containers, not `Period` or `TimeStamp` for example.

Should leverage  subclasse's `__unicode__` to do the right thing
on py2/py3 when it comes to repr,str,bytes #3183

I suggest putting in a mandatory `self.random_example()` (name?) method
that generates a random instance of the object. Convenient for testing, and for code snippets 
in test cases/issues. Complements the more general `makeX` generator functions in util.testing.

Side benefit, can more easily add one-size-fits-all sanity check for a pickle roundrip,
which would have caught #2891.

More ideas?
