`opts` now accepts blocks to generate default values.
`opts` now accepts blocks to generate default values.

Details:
* Sometimes we only want to do the work to instantiate a default
  value when the key doesn't exist in the options hash.
  Prior, all default values were processed and passed in.
* This change first attempts to lookup the key; followed by
  trying the default value; else, calling the block for a value.

byu/serf