Make it possible to extend a chain without polluting prototype

When extending prototype, we might get namespace collusions if we wanted to create multiple different domain-specific extensions. Instead we could extend each chain separately, with a simple z().extend method.

Code attached. What do you think?