Added method to get all attributes regardless of initialization.

If the object is not persisted, the default values will be merged with
the current ones in the object making possible to overwrite the default
values in case the object has values for attributes with default values.
Fix build in 1.8.7

Array#each_with_object is not defined on ruby 1.8.7
Fixed Array Attribute Setter on ruby 1.8.7
Merge pull request #59 from zertico/get_all_attributes

Added method to get all attributes regardless of initialization.
Refactoring attribute definition a little bit
Added Association Attributes and class methods to work with the association objects.

With one single class method is possible to create an attribute to hold
the identity, a method to load a model based on that identity and a
method to set a new identity which accepts an object that responds to
identity as well as the identity itself.
Renaming Association Attribute Models
Avoinding behavior breaking on HasMany when changing HasOne
Avoiding duplicate reject logic

The reject is already defined in #all_attributes. There is no reason to not use it!
Isolating Association Models from Attributes
Reworked Associations to be independent of Attributes
Refactoring Duplicated Code
Splitting Behaviors in different methods
Fix build on ruby 1.8.7
Pluralizing methods on Fog::Associations::Many
Bringing back has_one and has_many interfaces
Removing association interface
Doing some code cleanup
Merge pull request #60 from zertico/association_methods

Added Association Attributes and class methods to work with the association objects