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
solve does not subs beneath Exprs
is_real property for rv
density(f(RandomSymbol)) uses solve, not delta

This introduces a regression in Uniform handling
add difficult tests for old system
g(y) -> g in compute_density

g was already in terms of y
add piecewise to check in solve
refactor crv.expectation
docstring for conditioning on random symbol