API Reverse config extra statics control flow

Config system used to provide an add_static_source method, which was intended for
use by Extensions to add statics. But extensions for a class arent initialised
until at least one instance of that class is created, so before that the
Config system didnt include values from extensions

This patch reverses the control flow, so that the Config system explictly asks
each Object for its additional config sources via the new method
get_extra_config_sources. This method returns an array that can contain
string names of classes and also raw associative arrays.

The developer visible change is that Extension#add_to_class has been
deprecated. Instead there is a new method, get_extra_config, which has
the same method signature but needs to guarantee that it doesnt
cause side effects. Additionally there is no need to call
parent::get_extra_config - this is handled automatically.
FIX Removes version checking for LSB in Object::static_lookup()

Late static binding was added in PHP 5.3, not 5.4. As such, the check for 5.4
and then fallback to Reflection isn't needed.
i18n for "select an anchor" string (see #7798)
i18n for CMS section titles (see #7798)
i18n for GridField pagination footer (see #7798)
i18n for file type descriptors (see #7798)
APICHANGE: Changed behaviour of HTTP_Request::params to include route table params (as per 2.4 behaviour, see FIX: below).
ADDED: HTTP_Request::params() to retrieve all (shifted) params used in the request
FIXED: Issue where route-table level arguments would not be accessible without using non-deprecated API.
ADDED: Test case to test the above items
UPDATED: Extended Director::test to allow for the retrieval of the request object
UPDATED: Deprecated notice on Director::urlParam and Director::urlParams
REMOVED: Unused variable
FIXED: Coding convention conformity
FIXED: Error in test case deprecation
BUG: open ticket 7812 correcting filter syntax on a DataObject used by function updatetreenodes
FIX Config frag could only have one before or after rule

You should be able to specify multiple before and after rules in
a config fragment. This was intended to be a comma seperated string
but that wasnt being split properly

Now if you provide a comma seperated string it is split properly,
but you can also provide an array, which is actually cleaner
FIX Config wasnt filtering wildcards properly

When specifying a specific before rule and a wildcard after rule (or
vice versa), the config system was filtering out any fragment
from the list of fragments that matched the wildcard if it matched
_any_ componenet of the specific rule, not all of them.

Fixed, and added handling of two semi wild-card rules, where a
rule with less wildcards wins over a rule with more.

See http://open.silverstripe.org/ticket/7765 for more
NEW Allow debugging of config cyclic errors

It is possible to specify before and after rules on config fragments
that conflict - A before B and B before A isnt possible to solve.

This used to just throw an error with no way to debug. Now if you
specify debug as a GET parameter and the site is not in live mode
youll get a basic dump of the remaining DAG graph
Add some basic tests for ConfigManifest#relativeOrder
Removed accidental *.orig files
NEW Open external links in preview mode in new window (fixes #7652)

Rather than disabling the links altogether, which is
counter-intuitive to most users.
See https://github.com/silverstripe/sapphire/pull/638.

Also hide a duplicate $SilverStripeNavigator on the previewed
website (in case it has been manually applied to the template).
NEW FieldGroup_DefaultFieldHolder template

As a replacement for the FieldGroup->subfieldParam
setting available in 2.4. Usage through FieldGroup->setTemplate().
Removed arbitrary width restrictions on field group children

Let the fields handle their dimensions themselves
(for example the "from" and "to" date fields in the CMS pages search form)
Remove width limit on CMS panel dropdowns

No longer necessary as we've fixed the Chosen.js width
settings, which means the <select> fields can inherit
their settings and determine width automatically.
Removed DateField special width with .hasDatepicker class

Causes field to change width after first display,
as the .hasDatepicker class is added dynamically on first field focus.
Since we don't add an icon by default, there's no difference
between an <input> field with date picker, an input field for dates,
and a simple input field. Fall back to global (or CMS specific) rules.
Removed special "from"/"to" filter field CSS rules

Use global field rules instead, and fall back to new
"stacked" styling of FieldGroup (see CMS CSS)