rough in reifier and creator UoW classes
rename *_op_creator(s) to *_op_compilers
refactor PrimitiveOpCompiler to delegate to ast more heavily
implement attribute methods for generated primop classes
Document primitive_op_compiler
implement derived_op_compiler

Refactoring to come, it's basically the same thing as the primop one
Refactor op compiler specs to use shared example group
Refactor Op Compilers to use common parent

I'm a bit nervous about this one, it slightly violates Liskov, because the
derived op compiler will be not 1:1 replacable with a prim op compiler when we
get to the expression-parsing method later, but for the moment, this makes life
easiest (because overriding module methods is a bit tricky).
Document and Refactor OpCompiler
move specs to appropriate location
factor dugout/math/definition into multiple files
Ensure Op#attributes returns an array (and never nil)
implement display_function compilation
refactor definitions to use #define! helper
refactor display_function defaulting logic into compiler
refactor #default_display_functions! to do most of the work in the compiler
skirt rbx/mri inconsistency regarding Proc#block

see https://github.com/rubinius/rubinius/issues/2596
Document op_compiler
move Math::Model::{definitions} to Math::Model::AST::{definitions}
Fix errant definition of Dugout::Math::Model#ops

should return a list, not a list of lists.