fix: 0 rows affected treated as an error

Updating dirty entities fails when dirty properties are "chaged" to same
values.

Rely on SQLSTATE code instead of counting affected rows.

Reproduce this issue:

$article->accessible('*', true);
$article->set($sameValuesFromFormSubmit); // gets marked as dirty
$this->Articles->save($article); // return false [0 rows affected]
Add tests for #3065

When an entity is dirty but contains no actual changes to the row we
should count that as successful update.

Refs #3065
Merge branch 'empty-entity-save' into 3.0

Fixes #3065
Merge branch '3.0' of github.com:cakephp/cakephp into 3.0