Use invokedynamic for generated toString method

This is to avoid constant pool issues due to large strings
Factor out duplicate defineClass implementations
Add convenience method to create default constructor
Add no-arg constructor to CompilerContext

Implies no bootstrap method is provided