ENH Adding categorical parallel_coordinates implementation
 - [x] closes #12341
 - [x] tests added / passed
 - [x] passes ``git diff upstream/master --name-only -- '*.py' | flake8 --diff``
 - [ ] whatsnew entry

Initial PR for #12341 

I have a couple of questions, the signature is different from the parallel_coordinates method and I was not sure if we need all of them (for example axvlines)?

I've added some tests but need suggestions on how to test _connect_polyline(). I was thinking of simply using a mock object for the axes objects and verifying their attributes were being accessed.

Some context, I have a new method called parallel_sets() which converts all of its inputs to a string expecting categorical data always, via a string_to_integer dictionary, and plots those integers.