DateTimeで「front of」「back of」とタイムゾーンを組み合わせた時の挙動にバグがある件

# 検証

Windows7環境です。検証のために一時的にコンピュータ時刻とタイムゾーンを変更します。但し、差が開きすぎると自動同期できなくなるので、日付は現在のものをそのまま使うことにしています。

```php:検証コード
<?php
date_default_timezone_set('UTC');
$list = [
    'now' => [
        'now' => null,
        'now Asia/Tokyo' => null,
        'Asia/Tokyo now' => null,
        'now +0900' => null,
        '+0900 now' => null,
    ],
    'next hour' => [
        'next hour' => null,
        'next hour Asia/Tokyo' => null,
        'Asia/Tokyo next hour' => null,
        'next hour +0900' => null,
        '+0900 next hour' => null,
    ],
    'front of 1' => [
        'front of 1' => null,
        'front of 1 Asia/Tokyo' => null,
        'Asia/Tokyo front of 1' => null,
        'front of 1 +0900' => null,
        '+0900 front of 1' => null,
    ],
    'back of 1' => [
        'back of 1' => null,
        'back of 1 Asia/Tokyo' => null,
        'Asia/Tokyo back of 1' => null,
        'back of 1 +0900' => null,
        '+0900 back of 1' => null,
    ],
];
exec('net start w32time');
exec('tzutil /s "UTC"');
exec('time 23:30:00');
array_walk_recursive($list, function (&$v, $k) {
    $v = (new \DateTime($k))->format('Y-m-d H:i:s e');
});
exec('tzutil /s "Tokyo Standard Time"');
exec('w32tm /resync');
exec('net stop w32time');
print_r($list);
```

2015/03/05現在の実行結果を示します。

```php:実行結果
Array
(
    [now] => Array
        (
            # 基準となるUTCの現在日時です。
            [now] => 2015-03-04 23:30:00 UTC
            # タイムゾーン名の指定は、現在のタイムゾーンを上書きするだけでなく、実際に時刻を進めるようです。
            # これが仕様だとすれば正常です。
            [now Asia/Tokyo] => 2015-03-05 08:30:00 Asia/Tokyo
            # 順不同。正常です。
            [Asia/Tokyo now] => 2015-03-05 08:30:00 Asia/Tokyo
            # 時差での指定は、現在のタイムゾーンを上書きするだけのようです。
            # これが仕様だとすれば正常です。
            [now +0900] => 2015-03-04 23:30:00 +09:00
            # 順不同。正常です。
            [+0900 now] => 2015-03-04 23:30:00 +09:00
        )

    [next hour] => Array
        (
            # 最初より1時間進んでいます。正常です。
            [next hour] => 2015-03-05 00:30:00 UTC
            # 最初より1時間進んでいます。正常です。
            [next hour Asia/Tokyo] => 2015-03-05 09:30:00 Asia/Tokyo
            # 順不同。正常です。
            [Asia/Tokyo next hour] => 2015-03-05 09:30:00 Asia/Tokyo
            # 最初より1時間進んでいます。正常です。
            [next hour +0900] => 2015-03-05 00:30:00 +09:00
            # 順不同。正常です。
            [+0900 next hour] => 2015-03-05 00:30:00 +09:00
        )

    [front of 1] => Array
        (
            # 基準となった日の01時より15分前となっています。正常です。
            [front of 1] => 2015-03-04 00:45:00 UTC
            ###### 12時間の時差はどうやっても発生し得ないので、バグの可能性が高いと思われます。######
            [front of 1 Asia/Tokyo] => 2015-03-05 12:45:00 Asia/Tokyo
            # 基準となった日からAsia/Tokyo分だけ進めた日の01時より15分前となっています。正常です。
            [Asia/Tokyo front of 1] => 2015-03-05 00:45:00 Asia/Tokyo
            ###### 12時間の時差はどうやっても発生し得ないので、バグの可能性が高いと思われます。######
            [front of 1 +0900] => 2015-03-04 12:45:00 +09:00
            # 基準となった日の01時より15分前となっています。正常です。
            [+0900 front of 1] => 2015-03-04 00:45:00 +09:00
        )

    [back of 1] => Array
        (
            # 基準となった日の01時より15分後となっています。正常です。
            [back of 1] => 2015-03-04 01:15:00 UTC
            ###### 12時間の時差はどうやっても発生し得ないので、バグの可能性が高いと思われます。######
            [back of 1 Asia/Tokyo] => 2015-03-05 13:15:00 Asia/Tokyo
            # 基準となった日からAsia/Tokyo分だけ進めた日の01時より15分後となっています。正常です。
            [Asia/Tokyo back of 1] => 2015-03-05 01:15:00 Asia/Tokyo
            ###### 12時間の時差はどうやっても発生し得ないので、バグの可能性が高いと思われます。######
            [back of 1 +0900] => 2015-03-04 13:15:00 +09:00
            # 基準となった日の01時より15分後となっています。正常です。
            [+0900 back of 1] => 2015-03-04 01:15:00 +09:00
        )

)
```

ちなみに、タイムゾーン指定を第1引数の文字列から削除し、コンストラクタの第2引数で指定した場合は正しく動作します。

# バグレポート

- 今回検証したバグ - [#69186 Unexpected behavior using 'back of' or 'front of' with timezone specification](https://bugs.php.net/bug.php?id=69186)
- `front of` `back of` の翻訳ミス - [#69185 'back of' and 'front of' are reversely translated](https://bugs.php.net/bug.php?id=69185)