Refactor the conditional statement

Now call_condition_proc does the checks whether a proc is to be called.
The block that may be given projects the returns value. By default it is
the identity, but for `:unless` we need to negate the results.