Update datamodel.md to use an array argument to Enum instead of the more error-prone string

The previous argument to the Enum was: 
"Status" => "Enum('Active, Injured, Retired')"

This would cause issues where the 'Injured' and 'Retired' statuses would actually be stored in the database as ' Injured' and ' Retired' respectively, at least in 3.0.

Using an array() to specify the enum, and using normal array syntax (albeit within a string) is less likely to cause errors.
fixed wrong ID output for many_many and has_many relations
Unit test coverage for CMSMenuItem
Unit tests for Email

It's not much, but it's a start
BUG: Fix CMS forms with validation errors responding incorrectly.

A new form instance was being constructed for the response, which mean
that a lot of the validation information was lost. This fix means that:

* Enterered data is correctly persisted.
* A validation error notification is displayed.
FIX: Fix not switching to the correct tab on validation error.
Merge pull request #2514 from ajshort/pull-4

CMS Validation
Merge pull request #2510 from kinglozzer/cmsmenuitem-tests

Unit test coverage for CMSMenuItem
Appending to debug.log file

Until now debug.log files were loaded into memory, concatenated and then re-written to disk. This is an intensive operation on a large file.

I've added the `FILE_APPEND` flag to append to this file instead.
No HTML entities in "Groups" ListboxField (fixes #2513)
Merge pull request #2518 from dhensby/patch-1

Appending to debug.log file
Removed accidental artifacts
Remove large left margin on field description within cms-content-tools
Merge pull request #2511 from kinglozzer/email-tests

Unit tests for Email class
Merge pull request #2498 from jkempff/fix-1

fixed wrong ID output for many_many and has_many relations
Merge pull request #2495 from madmatt/patch-1

Update datamodel.md to use an array argument to Enum instead of the more...
GridField fragment docs
Merge pull request #2371 from chillu/pulls/gridfield-fragment-docs

GridField fragment docs
Change default message to be credential agnostic.
Load tree parent nodes if non-existant

This edge case can occur when a large tree is cached in HTML already,
without any nodes expanded via ajax. If a new node is added with
a parent that's not existant, it was simply placed on the root node.
This is a display bug, a full CMS refresh fixes it.

Fixes a related bug where tree causes (view) duplicates,
where the same node is rendered twice. This was due to the whole
subtree being refreshed (including the new node) through jstree's
built-in "open"/"select" events, while at the same time
creating a new node through updateNodesFromServer() callbacks.

Also added a global tree loading indication to make it clear
that the tree is still processing.

See https://github.com/silverstripe/silverstripe-cms/issues/872