Fix PropelObjectCollection to use the right approach during search()/contains()

Currently; we try to determine if an object is part of a collection by
using a strict comparison, objects have to have the same reference to be
considered identical. It could make sense but in real life, you can get
the same reference for two objects. By using a hash code, we better handle
this special case, only for ActiveRecord objects.

Fixes #383
clone object in hashCode() function

so the original object is not changed when calling hashCode
provided test for the hasCode() function
Ref #383. Fixed the ValidateBehaviorTest. (It did generate two entries with same pk)
Merge pull request #384 from marcj/ref-383

Ref #383. Fixed the ValidateBehaviorTest. (It did generate two entries w...
Allow selection of fields with lowercased names as in propel1.
Fixed #380. Ported propelorm/propel#590
Removed foreign-key stuff for MySQL MyISAM tables. Fixed #381. Ported propelorm/propel#562
Ref #347. Ported propelorm/propel#616.
Ref #381. Ported propelorm/propel#618
Merge pull request #388 from marcj/sortable

Ref #347. Ported propelorm/propel#616.
Merge pull request #387 from marcj/issue-381_port-562

Fixed #381. Ported propelorm/propel#562
Merge pull request #386 from marcj/issue-380_port-590

Fixed #380. Ported propelorm/propel#590
Merge pull request #385 from marcj/select-issue

Allow selection of fields with lowercased names as in propel1.
Fixed issue that came from the merge of the last 4 PRs.