Do not calculate values if they are not going to be used

When building the indexes list in PostgreSQL, IndexDefinition objects
are only created if the query for the related attributes really returns
something matching the attributes.

In case it does not, the variables for building the definition objects were
being created but not used.
Improve changelog entry for ActiveModel::Errors#full_messages_for [ci skip]

Add a working example of how to use this new method.