Lazy context evaluation

Provide options to construct power assert text if and only if assertion failed.

(Default values should be backward compatible)

 * [x] Design
 * [x] Rough test and implementation
 * [x] Refactor