WIP for review

This has a bunch of ideas I'll document inline
Rules are scored. All these return 0 or 1, but entropy could return a range of values.