plot_ts now works with pandas.DataFrame instances, in addition to narwhal casts
implement abstract base classes

The cls._type hack was getting annoying, and registering cast types to an
ABCMeta class seems cleaner.

This requires that external cast-like object register themselves before
they'll work with narwhal functions and methods, i.e.

    import narwhal
    class MyCastLike(object):
        [...]

    narwhal.AbstractCast.register(MyCastLike)

place ABCs in package namespace