3.0 association save improvements

Association methods should only save *entity* values, not any old data they happen to come across. Doing so prevents a few nasty problems:

* Fatal errors - calling methods on arrays makes PHP :cry:
* Unintended data being saved. The marhshalling code will convert any whitelisted associations into entities. Any non whitelisted properties will be left as arrays. Saving arrays == bad user data getting in.