Refactored how Module#const_missing is patched by virtual enumerations.

Module#const_missing is now patched when we run VirtualEnumeraions.define for
the first time instead of the PowerEnum engine initializer.  Patching Module
in the initializer seemed heavy handed since virtual enumerations are an
optional feature.
Improved test coverage of the enum generator code.