Improvements

Changed to return True and False instead of 1 and 0, also changed to
ensure will either raise a ValueError when an assignment that violates
the requires().__setattr__ is passed or will invoke the
super.__setattr__ to make sure that it can be passed along in case
there was another class that implemented that as well.