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)
API Storing alternative DB name in cookie rather than session

Session is not initialized by the time we need to use
the setting in DB::connect(). Cookie values get initialized
automatically for each request.

Tightened name format validation to ensure it can only
be used for temporary databases, rather than switching
the browser session to a different production database.

Encrypting token for secure cookie usage.
Added dev/generatesecuretoken to generate this token.
Not storing in YML config directly because of web access issues.
Fixed spacing
Don't register a PGSQL failure as a Travis build failure.

Although PGSQL build will still be executed, a failure of that build won't registre as a Travis failure.  This is a workaround until the PGSQL build has been fixed.
DOC Removed link to missing 'extending-the-cms.md'
Separate PHPCS run on travis, don't fail whole build for it
Readd SQlite to travis builds, having it fail harms TDD
Corrected link in Form field types docs
Merge pull request #1036 from howardgrigg/patch-5

Corrected link in Form field types docs