13 11 04 facet performance

A series of performance improvements for exhibit facets.  With these I'd say we can declare 25K items a good baseline for exhibit; even 200K items can be handled with reasonable interactive delay.  Performance improvements include:
1) shortcut several abstraction layers to avoid copying data
2) visitor methods to avoid copying data
3) special rapid evaluation for the common case of "one-step" facets (facets on a property .foo of the items, rather than chained expressions .foo.bar.baz)
4) special case handling for the case of a single restricted facet
5) more efficient intersection of constraints when multiple facets are restricted

This performance optimization has increased the complexity of the code, but not too badly.  Exhibit is now quite optimized for "single step" facets, and will not perform as well for chained expressions; however, many of the improvements apply there as well.