Function parameters might not always be (small) simple strings

Sometimes function parameters might not be simple strings.
In that case, convert the parameters readable using str().

Also, in addition -- sometimes the parameters are too large
for any use. For example a class being passed, or a large
list which inspect converts to a large sting. Hence,
truncate above a threshold.
Overhaul function and class processing into functions

The model for giving doctest coverage follows the steps:

1. Get the list of members in a module
2. If the member is a function - process
3. If it's a class
  -> Process class
  -> Process function members of the class

Currently this was being done completely inside the code of
coverage definition. I have split the task into, process_function
and process_class. Thus the code looks much easier and modular
to read and understand.
Add usage to option parser
Mul non-recursive is_positive
nonrecursive is_positive and is_negative for Mul

    If one encodes the attributes as follows:

        -2 nonpositive (sign is 0 or -1)
	-1 negative
	 0 zero (sign unknown)
	 1 positive
	 2 nonnegative (sign is 0 or 1)

    then if factors are recoded to these values according to their
    attributes then the product can be computed and checked for the
    attribute of being positive or negative.

    e.g. neg*neg*pos*nonpos*neg*nonneg
         -1 * -1 * 1 * -2 * -1 * 2 = 4 so the answer is 2-like: nonneg

    The only way to be purely negative or positive is to not have
    any +/-2 factors; the way to be *not* positive or negative is
    to have the right sign (e.g. to be nonnegative the sign must be 0
    or 1 which is what the 2 -- and greater -- positive values encode.
name changes on test variables

    While debugging, it was confusing to work with variables whose
    names had no correspondence with their attribute type (e.g. n
    for a positive variable).
remove is_number from is_positive and is_negative

    let the assumption system figure out if and when the routine
    should be called.
add Mul._eval_is_zero and test

    The Symbol with zero=True assumption is a real trouble-maker; it
    seems like it would be better to replace it with 0 upon
    instantiation. Until then, this commit should help.
simplify Mul.is_(positive|negative) code; add docstrings
move is_zero test higher in is_positive|negative logic

    is_nonpositive catches a zero so any zero factor never
    provided a quick exit for is_positive and is_negative,
    so the is_zero test was moved before that test and covereage
    checked to see that that is now covered.
Merge pull request #1058 from smichr/non-recursive

Non recursive is_positive and is_negative for Mul
Ensure that printing Dicts doesn't depend on key order of the wrapped dict.

Everything was already in place, except that Dict.__str__ and Dict.__repr__
were shadowing the printer methods.
Sort args of Booleans with default_sort_key in ccode()

+ Add spacing for readability
test_solvers.py: don't rely on Symbol.__call__()

Callable Symbols are a hackish feature we'd like to get rid of
at some point (cf. issue 440), so let's avoid writing tests
that rely on this.
3029: Sort args of boolean functions for latex and pretty printing.
Let the assumption system handle commutativity of symbols.

The attribute 'is_commutative' of Symbols was hidden from the assumption
system. Fixing this allows correct inference to happen:
>>> x = Symbol('x', commutative=False)
>>> x.is_real
False

and prevents inconsistent assumptions like
Symbol('x', real=True, commutative=False) from being set.

This changes the hash, so a number of tests and doctests need to be
modified.
Clean up sympy/core/test_assumptions.py
fix failing mechanics doctest
MatrixBase constructors always make new objects
Merge pull request #1120 from mrocklin/3143_matrixbase_identity

added is_square check to is_identity