Convert JS eagerly, execute it lazily, test it.

Originally, methods were converted and executed at the same time. This
isn't incredibly efficient, so the methods are now converted as soon as
they're defined, and are then simply called from the context when
called later on.

This potentially makes it easier for methods to communicate between each other, and probably makes it easier to move things out of Opal's global 
scope later on.