Move ActiveRecord::AttributeAssignment to ActiveModel.
Move UnknownAttributeError into ActiveModel.
Add ActiveMode::AttributeAssignment#initialize

ActiveModel::Model provides an initializer that assigns the give params to
attributes. We need to override it in ActiveModel::AttributeAssignment in order
to support multi-parameter attributes in the constructor.
Document ActiveModel::AttributeAssignment.
Clarify documentation.
Handle unknown multi-parameter attributes.

If mass assignment is used for an unknown single parameter attribute, an
UnknownAttribute error is raised. This makes the behaviour consistent for
multi-parameter attributes.
Raise helpful execptions on unexpected values.

When the attribute does exist, but we don't know what class to use for a
multi-parameter assignment, we now raise a helpful exception.

This should help people TDD their way to a correct implementation of
multi-parameter attributes, or make it more clear what's going on when there's a
real error.
Reorder file; put exceptions at the end.

This way the first thing you see when looking at the file is the documentation
for the AttributeAssignment model.