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 tests for Email

It's not much, but it's a start
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
Merge pull request #2523 from wilr/agnosticloginmsg

Change default message to be credential agnostic.
BUGFIX i18n module load order in i18n::include_by_locale()

The "project" module (normally mysite) is considered with the highest priority. Yet, the project's i18n is loaded first and cannot overwrite existing translations. I've added a array_reverse(), so the iteration keeps the translation of the module with the highest priority.

Old $sortedModules: mysite, (other_modules,) cms, admin, framework.
New $sortedModules: framework, admin, cms, (other_modules,) mysite.
BUG: Fix tab state not being restored due to incorrect selector.

Closes #2321.
Merge pull request #2525 from chillu/pulls/tree-node-parent-refresh

Load tree parent nodes if non-existant
Correct some incorrect PHPDoc definitions.
Merge pull request #2531 from ajshort/pull-5

Correct some incorrect PHPDoc definitions.
Merge pull request #2295 from JayDevlin/patch-1

BUGFIX i18n module load order in i18n::include_by_locale()
Strip duplicate querystrings from the url before adding document.location.search

When a querystring is passed with the url (for example Translatable locale) it is duplicated each time the content panel is reloaded, by adding document.location.search and so it should be stripped from the url first.
BUG Director::test now calls RequestProcessor

This fixes https://github.com/silverstripe/silverstripe-framework/issues/2517
and provides some testing around the use of RequestProcessor in general.