BUGFIX Make sure a message is set on ValidationException objects.
Fixed GridField button alignment (regression from a9cbea34)

The text-indent: 9999px was relying on text-align: right to function. Because it was left-aligned, text showed below the icon graphic.
The width of the button column was constrainted to 40px,
which first of all didn't fit the two icons properly,
but also made the big assumption that we never have more than two.
The new width: auto setting means that the column might be a bit
longer than desired, but at least it doesn't cut off icons
or wrap them into multiple lines unnecessarily.

Thanks to ARNHOE for starting this patch.
Merge pull request #998 from drzax/validation-exception-bugfix

BUGFIX Make sure a message is set on ValidationException objects.
Correct routing rule block indentation
Sort lists that check ordering of results

These tests would randomly fail, mostly on Postgres, as the result
is an unordered set, not the ordered set expected.
Removed @stable workarounds from composer docs

No longer necessary since we only add the @stable markers
for release tags, and remove them for release branches again.
Ability to replace entire content in HTMLEditorField JS API
More flexible Behat steps for HTML fields
API: Queries added by DataList::addInnerJoin() and DataList::leftJoin() come after the base joins, not before.

This bug will surface when using the ORM and adding an join to DataList
where a DataObject inherits another DataObject.

If you for example want to restrict the number of pages that only have a
related Staff object:

    $list = DataList::create('Page')
		->InnerJoin('Staff', '"Staff"."ID" = "Page"."StaffID");

This will create a SQL query where the INNER JOIN is before the
LEFT JOIN of Page and SiteTree in the resulting SQL string. In MySQL
and PostgreSQL this will create an invalid query.

This patch solves the problem by sorting the joins.
Modify Composer install path in docs

Composer examples at http://getcomposer.org/doc/00-intro.md use
/usr/local/bin for installing Composer globally, so let's use that
path as well instead of /usr/bin.
Add codesniffer that ensures indentation is with tabs.
NEW FixtureFactory separated out from YamlFixture

Enables more generic use of the fixture facilities
without dependency on the YAML format, for example
when creating fixtures from Behat step definitions.

Note: The YamlFixture class needs to be created via
Injector::inst()->create('YamlFixture') now,
direct instantiation is no longer supported.
BUG Fixed issue with convertServiceProperty

Fixed issue where convertServiceProperty is called when creating objects
with user-supplied constructor arguments, so that it's only called when
creating objects using injector configuration. This reduces the overhead
of unnecessary calls to convertServiceProperty.

Updated test cases to validate behaviour
Merge pull request #1007 from simonwelsh/indent-sniff

Add codesniffer that ensures indentation is with tabs
Merge pull request #1019 from nyeholt/injector_convert_service_params

BUG Fixed issue with convertServiceProperty
Added travis environment info output
Merge branch 'orm-join-bug' of git://github.com/stojg/sapphire into stojg-orm-join-bug
BUG Fix insert media form inserting images from other UploadFields (fixes #8051)

The insert media form would pick up unwanted images from other
UploadFields. Limiting where it is looking to only the closest form
fixes this.
Remove sub navigation for "Files" (fixes 7956)

Backport from master. Fixes display issues with expanded,
unselected submenus ... by removing them.
They're strictly not necessary since both "list" and "add"
modes can be reached through the default AssetAdmin UI.
Merge pull request #1024 from kinglozzer/8051-insert-media-duplicates

BUG Fix insert media form inserting images from other UploadFields (#8051)