BUGFIX: Added double quotes to column names in automatically generated indexes for many_many relationships (this time in the right place, should not interfere with index name - all tests pass)
API CHANGE: Added DataQuery::aggregate() to allow for aggregates beyond Min, Max, Avg, Sum.
API CHANGE: Added GridField::addDataFields() to allow the definition of custom callbacks to be used by all GridField components.
API CHANGE: Added GridField::getDataFieldValue() to encapsulate field lookup for all components.
API CHANGE: Allow 'callback' key to be specified in a GridFieldDataColumn column info.  In this case, title should be put as the 'title' key of a map rather than simply the column info.
API CHANGE: Added DataList::filterByCallback() to allow filtering by PHP code.
BUGFIX: Ensure that DataList::filter() doesn't modify the original object.
API CHANGE: Added $value argument as the first argument of a gridfield formattting callback.
BUGFIX: Consistently style custom defined page icons.

* Apply page icon styling to .page-icon, rather than specific elements.
ENHANCEMENT: Implemented help text for form fields.

The title attribute is extracted from form fields and displayed inline
below the field.
MINOR: Include the title attribute on tree and readonly fields.
MINOR Using new setDescription() styling in HtmlEditorField
Merge branch 'stylingfixes' of https://github.com/ajshort/sapphire into ajshort-stylingfixes
BUGFIX Inlining TinyMCE HTML popup (fixes #7451)

Doesn't include base TinyMCE logic when used externally,
most likely a TinyMCE bug since the source_editor.html file is unmodified.
MINOR Fixed duplicate help text on Group->getCMSFields()
ENHANCEMENT HTML titles in TreeDropdownField

HTML in tree nodes is already used to render page icons via SiteTree->TreeTitle.
In order to select the initial value correctly via HTML5 data attributes,
we need to encode any HTML values.
MINOR Added destroy() method to jQuery.changetracker plugin
MINOR Using new jQuery.changetracker.destroy method in LeftAndMain.EditForm.js
ENHANCEMENT: Added the ability to set a cost (the property was protected before and there were no setters and getters) and enforced the php requirements on the cost string used in the salt of crypt. Specifically, two digit from 04-31. Updated unit tests for blowfish algorithm to actually use the salt generation function and to test the newly implemented cost setting and getting functionality.
BUGFIX: Ticket #5578  SiteTree->CanCreateTopLevel() doesn't change dragged tree nodes or ParentID changes
BUGFIX Make sure to only construct args for prototype object creation if
there are actually args passed through to prevent overwriting with null
args if they're passed

MINOR Added __get alias to remove need for explicit ->get() call

MINOR Added the injector instance as an object that can be injected into other classes

BUGFIX Fixed issue described in http://open.silverstripe.org/ticket/7448 whereby using the injector to create an object of a type already registered as a singleton would actually overwrite the stored singleton object
BUGFIX Moved initialisation of injector to the start of Core.php to make sure that it is initialised correctly before additional code blocks reference it (in particular some of the code introduced by Sam that is triggered during add_extension).