permute method for Tr operator
added test for trace permute
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.
Incremental Schreier-Sims algorithm

Implemented the incremental Schreier-Sims algorithm for finding
a base and strong generating set for a given permutation group by
extending a sequence of points and a generating set.
Remove redundant generators from a strong generating set

Implemented a function to remove redundant generators from a
strong generating set relative to a base.
Started an implementation of subgroup search.

The subgroup search algorithm finds generators for the subgroup
of a given group containing all elements satisfying a given
property.
Initial implementation of subgroup search - needs debugging

Implemented an algorithm to find the subgroup of group elements
satisfying a given property. It currently works in most cases,
however there are some exceptions and it needs debugging.

Wrote an utility function _insert_point_in_base which takes
a BSGS and related structures (transversals, orbits) and
inserts a given point in a given position in the base. The
changed base/strong generating set are guaranteed to be valid
only partially, up to the position at which the new point was
inserted.

Wrote some tests for the new functions introduced.
Fixed the bug in subgroup_search

Also, wrote some tests and made the code a bit more tidy.
More sophisticated tests are to be implemented soon.