Assertion tests, minor fixes

Adds assert() and strict_assert() methods, which raise a StandardError
if the object is not equal to or strictly equal to the argument,
respectively.  Use assert!() and strict_assert!() to instead raise a
RuntimeError.

Use assert?() or strict_assert?() to return a boolean value indicating
equivalency (this is an alias to eql? and ===, respectively).

Fixes some issues with stack traces and a malformed operation in the
Entities module.