Rewrite: OOP, Output reporters, bug fixes.

Currently very little tested. Proposing to release as 1.0.0 once  reviewed/merged, .