[WIP] formatter refactored

refactored date formatting functions based on #3790

fixes #2359

- removed unformat methods, they do not belong here
- removed db format, which is also not purpose of this class
- refactored the whole set of methods to be simpler and better
  maintainable

More unit tests needed.

TODO:

- [x] refactor number formatting functions
- [x] support numberformatter options
- [x] make asSize compatible with number formatting
- [ ] ~~make format config compatible with the datepicker extension~~
- [x] unit tests for date time functoins
- [x] unit tests for number formatting
- [x] update docs public API
- [x] update docs protected API
- [x] update guide
- [x] https://github.com/yiisoft/yii2/commit/f3520187d62a28d5f9d1854f47467b563e6784a6
- [x] https://github.com/yiisoft/yii2/commit/46b553f01245daba6ba6e099bb35e1ebb8d0cb7e
- [x] CHANGELOG + UPGRADE note + rename references

## Changes from the UPGRADE file:

----------------------

* The formatter class has been refactored to have only one class regardless whether PHP intl extension is installed or not.
  Functionality of `yii\base\Formatter` has been merged into `yii\i18n\Formatter` and `yii\base\Formatter` has been
  removed so you have to replace all usage of `yii\base\Formatter` with `yii\i18n\Formatter` in your code.
  Also the API of the Formatter class has changed in many ways.
  The signature of the following Methods has changed:

  - `asDate`
  - `asTime`
  - `asDateTime`
  - `asSize` has been split up into `asSize` and `asShortSize`
  - `asCurrency`
  - `asDecimal`
  - `asPercent`
  - `asScientific`

  The following methods have been removed, this also means that the corresponding format which may be used by a
  GridView or DetailView is not available anymore:

  - `asNumber`
  - `asDouble`

  Also due to these changes some formatting defaults have changes so you have to check all your GridView and DetailView
  configuration and make sure the formatting is displayed correctly.

  The configuration for `asSize()` has changed. It now uses the configuration for the number formatting from intl
  and only the base is configured using `$sizeFormatBase`.

  The specification of the date and time formats is now using the ICU pattern format even if PHP intl extension is not installed.
  You can prefix a date format with `php:` to use the old format of the PHP `date()`-function.


From my point of view it's very important that the two functions `getIntlDatePattern` and `getPhpDatePattern` are public and enriched. The lines 510 to 517 should be moved into these two functions.

Reason: All widgets which handles dates like `datecontrol` or `bootstrap datepicker` (both from Kartik-V take format already from formatter) or JUI datepicker should take there format patterns from here by default. If want to write an application with dynamic language support no format patterns can't be hard coded in widgets or in widgets config mechanisme. In my application the language is defined on user level which initializes the `$app->langugage` after login. All formats must change automatically in all components / widgets.

I think formatter is the right place to provide such information for other components or widgets. If you write a separate helper class like discussed in issue #1551 you have to move the complete logic with language and format definition to the helper class. Formatter should have some more functions like `getDecimalSeparator`and `getThousandSeparator` and `getCurrencyCode`. The content is dependant on if intl is loaded, language or configured in config file. Formatter should be the only place in Yii2 application which has to know if `intl`is loaded or not.

Do you understand what I mean with these centralized information platform for components and widgets?