Accept a block for attr_initialize and friends

The block is useful when using attr_extras in conjunction with classes
like SimpleDelegator from Ruby's standard library. It's also helpful for
setting up memoized lookup hashes.
Oh, I didn't notice there were specs just for those. I moved this as requested and the `pattr_initialize` spec to `pattr_initialize_spec.rb` in  8461846.