Simplify pickle __getstate__

Your `uncertainties.AffineScalarFunc.__getstate__` method makes it harder for subclasses to add extra `__slots__` attributes, requiring them to provide their own `__getstate__` method.

The `uncertainties.Variable` class has to do does just that; create it's own `__getstate__` that looks at the `self.__slots__` attribute then adds the `__getstate__` result of it's parent class to get a complete pickle state.

This pull request replaces the `AffineScalarFunc.__getstate__` method with one that scans the whole inheritance tree (in MRO order) for `__slot__` attributes *on the classes*, then builds the pickle state from those.

This makes subclassing either `AffineScalarFunc` or `Variable` easier; all you need to do is add your own `__slots__` attribute with additional attributes to be pickled.

See this [Stack Overflow question](http://stackoverflow.com/questions/15117372/pickle-attributeerror-module-object-has-no-attribute) for further context for this patch.