Replace Class(*args) by self.func(*args).

Addresses nonexhaustively the subclassing problem. For example,
when you subclass Add, and then perform some operations on an
instance of your subclass, you expect an instance of your subclass
to be returned. Previously you often would get an instance of Add.

Issue 3652: Make sure classes play nice with potential subclasses
http://code.google.com/p/sympy/issues/detail?id=3652
Merge pull request #2243 from jrioux/design

Replace Class(*args) by self.func(*args).