Add asdict method and pickle support

The asdict method is added with support of two options controlling what
kind of container to use and the inclusion of the data fields. Also the
immutable class instances can be shown to pickle nicely now.