OOParsing: tidy up in-source comments to make a bit more sense

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
OOParsing: move core Ephemerals framework to their own module

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
OOParsing: fix bugs/misfeatures in EphemeraProduction UserList code

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
Ephemeral: tidy up some comments

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
Ephemeral: install_descriptor_wrappers -> DescriptorWrappersInstaler (rename)

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
Ephemeral: transformation_rejection_munger -> InstallTransformationToTypeErrorMunger (rename)

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
Ephemeral: drop semantically superflous class nesting of become_wrapper

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
Ephemeral: fix the ReadonlyMetaDescriptor mess

This got all screwed up once we stopped generating per-class
MetaEphemeral subclasses.  Prior to this patch, the following would
cause an infinite loop in ReadonlyMetaDescriptor.__get__:

@ephemeral
class foo(object): pass
print foo.become

To solve this, we have to go behind the metaclasses' back.  We do this
by iterating the mro, checking each classes __dict__ for the "hidden"
descriptor.  Seems to work like a charm now.

Also, renames the grossly over-loaded "become_wrapper" class name to
TransformationRejectionToTypeErrorMunger, and the generated
"become_wrapper" function to
TransformationRejectionMungingBecomeWrapper.  This at least brings us to
a point where there is only one thing named "become_wrapper" in the
framework... although I'd still like to rename that to something more
descriptive as well.
Ephemeral: convert degenerate class to global function

Convert InstallTransformationRejectionToTypeErrorMunger to a
function since it basically acts like one.  Also re-jigger the arguments
to make it clearer that it's just installing a wrapper function in place
of the old one.

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
Ephemeral: drop trivial function

After the preceeding refactorings, the full stupidity of the
InstallTransformationRejectionToTypeErrorMunger is now laid bare for all
to see -- it's function with a trivial implementation that only gets
called in a single place -- in other words, it's a pointless and
purposeless layer of abstraction.  Instead of calling a function that
does X, we can just do X.

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
Ephemeral: clean up in-source comments

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>