permute method for Tr operator
added test for trace permute
Correct the _hashable_content of Subs.

_hashable_content should return a tuple.
Merge pull request #1437 from Krastanov/subs_hashable_content

Correct the _hashable_content of Subs.
nsolve uses free_symbols instead of atoms(Symbol) (issue 3309)
Added test to check auto permute
Merge pull request #1438 from asmeurer/nsolve-fix

nsolve uses free_symbols instead of atoms(Symbol) (issue 3309)
sympy.printing.preview: Support additional LaTeX packages.

This commit adds the keyword argument packages to preview which should
be a list of LaTeX package names to be added to the preamble of the
document.
preview: Use () as default value for packages.

This commit also fixes an extra backslash linebreak.
Merge pull request #1434 from gdevanla/trace_permute

Trace permute
Merge pull request #1426 from scolobb/preview-packages

sympy.printing.preview: Support additional LaTeX packages.
	Randomized Schreier Sims, abelian groups
	Backtrack search printing all group elements

	Implemented a procedure that prints all group elements
	in the lexicographical ordering induced by a base (i.e.,
	according to the images of the base under the action
	of the group elements).

	This basic procedure that visits all elements will be
	used with some modifications for other backtracking
	algorithms for permutation groups.
	Implemented baseswap (needs debugging)

	The algorithm baseswap is used to swap two consecutive
	elements in the base of a permutatation group. The
	current version breaks somewhere and needs some debugging.
Fixed the bug in BASESWAP, refactored the code

The reason the implementation of BASESWAP suggested
in the "Handbook..." was failing is that (I believe)
there is a mistake in the book. Now that I noticed
it, it seems to work fine. This will be further
discussed in my blog.

Also, implemented a randomized version of BASESWAP
that is supposed to run faster than the deterministic
one.

Introduced some new utility functions to help
handling computations using a BSGS, and refactored
PRINTELEMENTS and BASESWAP accordingly.

Moved the current utility functions to a new file,
util.py, and moved the constructor for an abelian
group to the named_groups.py file.
Docstrings, tests, refactoring

Wrote docstrings and tests for the new functionality,
and did some refactoring in the new functions.

Also, made possible the interaction with the
deterministic version of the Schreier-Sims algorithm
by introducing some new attributes.

Reorganized the util.py file containing helper functions for
the combinatorics module.

Altered _strip in sympy/combinatorics/util.py
so that it accepts basic transversals as an argument, instead of
basic stabilizers, so that finding transversal elements is done
in constant time. Altered _distribute_gens_by_base in the same
file slightly.
Removed list_lex_by_base and related tests/references.

The function list_lex_by_base served as a stepping stone in
my understanding of more complex backtracking routines, so
I'm removing it now. There are other (and faster) functions
that list all group elements.
Improved some of the docstrings.
Removed unnecessary blank lines from perm_groups.py
Ordered the methods in several files alphabetically.

These were: the standalone methods in named_groups.py and
util.py, and the class methods for the classes _JGraph
and PermutationGroup in perm_groups.py.