Added *very* basic support for assertions

Currently I can only assert against output but I want to make it
possible to assert much more by allowing the code to create objects and
simply asserting directly against the objects. Would be nice if the
specs had access to the users Proc so I could using capture_io and
return any created objects.
Made the acceptance criteria far more flexible.

Exercises can now be defined using a DSL :D