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.
Add codesniffer that ensures indentation is with tabs.
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
Add codesniffer that ensures indentation is with tabs.
Merge pull request #1007 from simonwelsh/indent-sniff

Add codesniffer that ensures indentation is with tabs
Merge pull request #1021 from simonwelsh/indent-sniff_3.1

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

BUG Fixed issue with convertServiceProperty
Merge remote-tracking branch 'origin/3.0' into 3.1

Conflicts:
	admin/javascript/LeftAndMain.AddForm.js
	control/Director.php
	control/HTTPResponse.php
	dev/Profiler.php
	email/Mailer.php
	forms/ComplexTableField.php
	forms/ManyManyComplexTableField.php
	forms/SimpleImageField.php
	forms/TableField.php
	forms/TableListField.php
	javascript/ComplexTableField.js
	javascript/ImageFormAction.js
	javascript/TableField.js
	javascript/TableListField.js
	security/Member.php
	tests/behat/features/bootstrap/SilverStripe/Framework/Test/Behaviour/CmsUiContext.php
	tests/forms/TableListFieldTest.php
BUG: Confirmed Password Field now copies attributes to child fields.
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)
API Moved email bounce handling to new 'emailbouncehandler' module
Fixed wrong floating on GridField certain buttons

Regression from 9152387c92, alternative solution to
https://github.com/silverstripe/sapphire/pull/1028
Fix to allow buttons to align inline (fixes #8099)
Moved group member listing utility buttons after field

Stay consistent with main member listing in admin/security,
and de-emphasize their importantce. Having the "link existing"
closer to the actual table is a much stronger UI coupling.
Suppress jQuery UI's borders around tabs in the CMS

Noticed this on the "Groups" tab in admin/security, but
likely a problem elsewhere as well.
Made GridField font size settings less cryptic

Instead of applying it to generic alignment classes like
"left" and "right", make it clear that those are targeted
at all contents of the button row.