Prototype based

Building on whitespace and JSLint changes, this PR moves to prototype-based inheritance in order to save on memory. It is backward compatible, though I have deprecated the old singleton style in favor of a class-based approach (I might still allow for a separate evaluate method but which would be auto-called by default for convenience and backward compatibility).

If the pseudo-privacy of the new underscored methods is a problem, we can simulate private instance methods by `.call(this, ...)`, but that has a run-time cost, and I don't think pseudo-privacy is any real problem.