reaction.gene_reaction_rule sets gpr

Instead of calling the function add_gene_reaction_rule to set the gpr,
the gene_reaction_rule can be modified directly, and the setter
automatically will call the gpr parser. This is safer because the gpr
could previously be modified with no effect.

The gene_reaction_rule information is now stored as
_gene_reaction_rule. In order to preserve pickle compatibility, this is
now accounted for in __setstate__
add some unit tests for raection GPR's
one more unit test for reaction gpr
views to read only properties are read only

use frozenset for reaction.genes and dictrpoxy (if possible) for
reaction.metabolites
give species a readonly reactions property

Can be used to get a read-only view of the metabolite reactions
typos in Reaction.py
Merge pull request #55 from aebrahim/reaction_clean_gpr_setter

Reaction clean gpr setter (continued 2)