strict validation fixes
strict compatibility fixes
Fixing notification errors
Expandable now has an encode() and decode() values

I had written before/after callbacks on the Expandable models and on the parent model,
but upon refacotring it just made a lot more sense to do data translations here,
where we are doing the trasnaltion.

Current support for:
* restricted_keys: simple array of fieldnames to ignore
* encode_date: takes fieldname as key, and format as value
* encode_csv: simple array of fieldnames we want to encode as CSV (handy)
* encode_json: boolean (support for all other arrays, etc)
comments with correct function name
Had to set all associated models as restricted keys
Bugfix for expandable database rows switching foreignKeys (See detailed notes)

I cannot replicate this in unit tests, but I can replicate it in our application that uses Expandable.
We have "Member" as a model with "MembersField" as an expandable.

I create a controller that only does:
$this->Member->save(array('id' => 1, 'job_credit_total' => $total));

The first time I run it, the correct members field entry is there:
+---------+---------------------+---------------------+-----------+------------------+-------+
| id      | created             | modified            | member_id | key              | value |
+---------+---------------------+---------------------+-----------+------------------+-------+
| 1353409 | 2014-01-17 10:32:27 | 2014-01-17 10:32:30 |         1 | job_credit_total | 10    |
+---------+---------------------+---------------------+-----------+------------------+-------+

The second time I run it, the member_id is changed to the currently logged in user:
+---------+---------------------+---------------------+-----------+------------------+-------+
| id      | created             | modified            | member_id | key              | value |
+---------+---------------------+---------------------+-----------+------------------+-------+
| 1353409 | 2014-01-17 10:32:27 | 2014-01-17 10:33:35 |    120854 | job_credit_total | 10    |
+---------+---------------------+---------------------+-----------+------------------+-------+

There is some sort of interaction between another query our site is doing in regards to
the currently logged in user and MembersField that is changing the state of the $Member->MembersField
object.   I cannot pin it down.

However, moving this code to a seemingly redundant location fixes the problem.
Merge pull request #2 from zeroasterisk/master

Various fixes for Cake2.4+ & extended functionality