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.