BUG: Allow empty else- and else_if-blocks

This fix allows empty else and else-if blocks to be processed, fixes #1660
Fix broken CMSSettings saving

Regression from da7e515d1331693422457054997092ef0b31c437
BUG Fixed incorrect variable usage in generation of PhoneNumberField form fields
DatetimeField returns wrong year

This is related to how Zend_Date returns year for YYYY & yyyy format. Detailed explanation is here http://framework.zend.com/issues/browse/ZF-5297

Sample code (adapted the Datetimefield setValue() method) to highlight the problem:

include 'framework/thirdparty/Zend/Date.php';

$userValueObj = new Zend_Date(null, null, 'en_US');
$userValueObj->setTimezone('GMT');
$userValueObj->setDate('2012-01-01', 'YYYY-MM-dd');
$userValueObj->setTime('00:00:00', 'HH:mm:ss');
echo $userValueObj->get('YYYY-MM-dd HH:mm:ss', 'en_US'), "\n"; // returns 2011-01-01 00:00:00
echo $userValueObj->get('yyyy-MM-dd HH:mm:ss', 'en_US'), "\n"; // returns 2012-01-01 00:00:00
Group description in CMSFields
Merge pull request #1758 from chiujl/patch-1

DatetimeField returns wrong year
Merge pull request #1755 from kinglozzer/leftandmain_state_fix

Fix broken CMSSettings saving
Merge pull request #1757 from tractorcow/3.1-phone-field-fix

BUG Fixed incorrect variable usage in generation of PhoneNumberField form fields
Merge pull request #1750 from s-m/1660-elseif-parsing

BUG: Allow empty else- and else_if-blocks
BUG: Fix for #1487

The parser could sometimes generate invalid code if the
source-file-comments were enabled, this moves the comments outside the
html-tag to circumvent these problems, update test as well.
DateField.js event selector regression (fixes #1528)

See 19a8545076f477d15aa5ed7fe52af020f43d28ab
Merge pull request #1726 from s-m/1487-fix-template-comments

BUG: Fix invalid code with source-file-comments, fixes #1487
removing potentially invalid html in email

The generic email template encapsulates the "body" content in a paragraph mark.  This is undesirable as it can lead to invalid HTML. Rather than using a paragraph, it is better to have a div encapsulating the content.

The underlying reason for this is that $Body is usually HTML and this can included block elements (div, p, etc...) that are not allowed within paragraphs (p).

It is important that the HTML is valid, because it will reduce the likelihood for it being marked as spam, because it is less likely to show up strange formatting and for use of tools like emogrifier.
Extended docs for shortcode handling and doctypes (fixes #1700)
Remove duplicate functionality between float and double
Merge pull request #1769 from wilr/doubleduplication

Remove duplicate functionality between float and double
Enforcing extension-less file validation (fixes #1767)

By default, File.allowed_extensions contains '' (no extension),
but if you specifically remove it, the validation should pick it up.
BUG: HiddenFields and VisibleFields should always return extraFields

HiddenFields() and VisibleFields() should always return extraFields, e.g. HiddenFields doesn't return SecurityID if it is called before Fields().
FIX We still need XML escaping on href attributes in HTML4Value
Merge pull request #1773 from silverstripe-rebelalliance/fix/htmlvalue_attr_escaping

FIX We still need XML escaping on href attributes in HTML4Value