Stop relying on the object identity of multiple instantiations of ().

I don't think that's guaranteed across Python implementations.
Make Grammars extensible through custom Python code using "custom rules". Close #47.

* Add `expression()` factory for turning simple lambdas into Expressions, mostly for use internally by Grammars in converting custom rules.
* Add support for "custom rules" in Grammars. These provide a hook for simple custom parsing hooks spelled as Python lambdas. If you want to abuse the packrat cache, you can even be stateful! (If this becomes useful, we'll add another arg for passing a proper blackboard around.) For heavy-duty needs, you can put in Compound Expressions with LazyReferences as subexpressions, and the Grammar will hook them up for optimal efficiency--no trips through the Grammar's hash at parse time.
* Allow grammars without a default rule (in cases where there are no string rules), which leads to also allowing empty grammars. Maybe someone generating grammars dynamically will find that useful.