Found and fixed a but in Session/Scratch/deleteNameByValue. It would
not delete any value that was false (0, '' or undef). Added a defined-ness
check to make sure it will delete 0 or '', but undef is still not handled.
Added POD to say that this was the case.
Session/Id.pm: add a method to validate GUIDs, change s/// to tr/// for efficiency.
Session.pm: change open to use new Id.pm validation method
Scratch.t: Change test from ok to is so that it tells you what the failing ID is.
Id.t: Add validation tests in addition to uniqueness tests. Fix the uniqueness test so that it works. Add tests to check the new validation method
User.t: better clean-up at end
Scratch.t: no newlines in test output
Session/Scratch.pm: convert to use placeholders
Ad.pm: Add missing line of POD.
Group.pm: add method to get all users in a group by karma.
User.pm: isInGroup to use getKarmaUsers.