BUG onDemand plugin fixture

Added trim() to decodePath function. Headers X-Include-* comes with a
space so some files are loaded twice. Looks like that depends on a
webserver. nginx has the space.
Check if remote class exists in DataObject->getRemoteJoinField()
NEW: Created LessThanOrEqualFilter and GreaterThanEqualFilter
IMPROVEMENT/FEATURE Forcefully write javascripts to the end of the HTML if wanted.
It's defaulted to false. But when set to true, the JS is written to the end of the HTML, even though there are earlier scripts.
This results in faster page-loading if the JS isn't needed earlier-on.
Added SSViewer::get_templates_by_class() to make the functionality in LeftAndMain::getTemplatesWithSuffix() more open.
API: Support string descriptors for unique indexes in Versioned

- Document the format for descriptor arrays
- Implement the behaviour that developers have come to expect for
  string descriptors of indexes
- Add test for handling of unique indexes (MySQL & sqlite3)
- Resolve #2403

Versioned needs to convert unique indexes to non-unique for its suffixed
tables, such as Foo_Live and Foo_versions. Because DataObject accepts
string descriptors such as array('UniqIDX' => 'unique (Uniq)') as well
as array-based descriptors, Versioned needs to recognize string
descriptors. This patch accomplishes that. Before, Versioned would fail
to convert string-described indexes to non-unique, resulting in run-time
errors when creating a new version of an object.
Tidy up enum matching where classname is missing
Merge pull request #2707 from wilr/enums

Tidy up enum matching where classname is missing
Merge query strings in $.path rather than duplicating

Fixes common duplications like ?locale=en_US&locale=en_US,
triggered e.g. by gridfield's showDetailView().

See https://github.com/silverstripe/silverstripe-translatable/issues/154
IMPROVEMENT/FEATURE Forcefully write javascripts to the end of the HTML if wanted.
It's defaulted to false. But when set to true, the JS is written to the end of the HTML, even though there are earlier scripts.
This results in faster page-loading if the JS isn't needed earlier-on.
NEW Force the javascripts to be put before the closing body tag
Git is complaining about a non-existing commit
IMPROVEMENT/FEATURE Forcefully write javascripts to the end of the HTML if wanted.
It's defaulted to false. But when set to true, the JS is written to the end of the HTML, even though there are earlier scripts.
This results in faster page-loading if the JS isn't needed earlier-on.
NEW Force the javascripts to be put before the closing body tag
Merge branch 'feature/force_write_js_to_bottom' of https://github.com/Firesphere/silverstripe-framework into feature/force_write_js_to_bottom
Merge pull request #2708 from chillu/pulls/addsearchparams

Merge query strings in $.path rather than duplicating
Added .content styles to debug.css, removed fieldset styling
Leave original ValidationException intact in write()

If we want DataObject->validate() to be used instead of
the form layer, we should allow for validation errors
to be passed through unchanged to the controller layer
so we can present them to the user. The context of
which class is written should be apparent from the stacktrace
of the exception.
Merge pull request #2714 from chillu/pulls/validate-write-message

Leave original ValidationException intact in write()
Merge pull request #2679 from micmania1/2658-get-templates-with-suffix

API: moved getTemplatesWithSuffix functionality out into a SSViewer