Issue 1943 - systematically testing pickling of astropy classes

Made sure existing pickling tests included multiple protocols.
Added basic tests for most base classes and some subclasses with additional attributes.
Most of these tests only check whether or not attributes survive pickling, not whether or not they have the same value before and after. Only the NDData test checks for changes to the various arrays it stores.

Some of the failures may be irrelevant (e.g. is constants not being pickleable actually a problem?).
Some of the failures are currently xfails by design (e.g. coordinates.DynamicTransform, which can have a function as an attribute).

Successfully reproduces the Issue 1942 problem.