RandomSymbol.is_positive
given(expr, rv) -> given(expr, Eq(rv, rv.symbol))
SingleDiscreteDomain
test_mix.py
Density(RandomSymbol) -> RS.pspace.distribution
FiniteDistribution both dict and lambda like
FiniteDistribution is callable
FiniteDensity.__call__ safer
evaluation moved from *rv to rv.py

Previously the subclasses passed down evaluate keywords and branched

if evaluate:
    return integrate( ... )
else:
    return Integral( ... )

if evaluate:
    return summation( ... )
else:
    return Sum( ... )

This was difficult to keep track of though and some parts evaluated
when they weren't supposed to.

Now, the subclasses never evaluate.  Everything is returned lazily.

The functions density, expectation, probability, etc... contain the
evaluate branches
dict keyword on FiniteDistribuiton and FiniteDensity
fix density doctest in rv.py
Check that RandomSymbol's pspace is single pspace
log(Product(...)) -> Sum(log(...))
solve does not subs beneath Exprs
is_real property for rv