Better name collision detection and avoidance.

This commit implements Travis Brown's idea: we use reify with fixed
names (e.g. __i, __n, __b) but we detect whether the anonymous
functions contain references to these names, and issue a compile-error
in these cases.

With this change, I'm a lot more confident we're doing the rigth thing.
It also means we can roll back to a 2.10-compatible version.