Improve subs for Derivative.

Perform substitutions if derivative variables are in a different, but
equivalent order and perform substitutions for subderivatives.
Add additional tests for Derivative subs method.
Merge remote-tracking branch 'sympy/master' into derivsubs

Conflicts:
	sympy/core/function.py
Use expr.func instead of expr.__class__ in expand
Fix symbols syntax in subs tests.

Use symbols('x y z') syntax instead of map(Symbol, 'xyz').
Merge pull request #2454 from asmeurer/expand_expr.func

Use expr.func instead of expr.__class__ in expand
Merge pull request #2200 from oliverlee/derivsubs

Improve subs for Derivative.

Perform substitutions if derivative variables are in a different, but
equivalent order and perform substitutions for subderivatives.