[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.


In my tests line 552 throws an exception (not cachable because constructor crashes) if a date doesn't exist eg. 06/35/2014. I tried DateTime::createFromFormat at this position. It doesn't crash an brings the value of 07/05/2014 back. The problem is that you must have the parameter of a valid php format pattern which matches to the $value parameter. If this function is used from "formatDateTimeValue" only the format pattern would be known after conversion.