API Better declaration of DataObject field change levels.

Use of const named identifiers to represent each change level rather than numbers.

This means that the change levels and code interacting with `DataObject::$changed` now is a little bit more meaningful to the passive observer.

This also replaces the `changed = true` assignments to `changed = CHANGE_VALUE` in order to maintain consistency (these should be integer values).

Extracted from my ORM changes at https://github.com/silverstripe/silverstripe-framework/pull/1360