feat(builder): adds attributes_for method to dryify attributes creation

The `attributes_for` methods will construct an attributes hash using
the passed-in attributes hash and defaults.
The method will use the `mergeable_attributes` array to
determine if the default value is overridden or merged into the final
hash.
All default templates have been updated.