Add __warn_unused_result__

Targets #240 and partially #139, too.

Appropriate fixes are included.