3.0 - WIP - Refactor I18n

Please ignore the missing / incorrect docblocks for now.

 - I created Catalog engine class and moved the po/mo parsing code in to Gettext catalog class. This should theoretically allow using alternate backends for storing the translations.

- Currently there's a *feature* that for each domain `I18n` first checks if translation is available in core.po. I have not implemented that feature. Is it necessary to keep this feature? I don't think so.

- Handling of LC_TIME files is pending. (Hence the failing time tests.)

- There's request for adding "context" feature #2063. Is someone willing to update the existing parsing code to account for `msgctxt` tags? If not we can look into using a 3rdparty lib for parsing po files like [PoParser](https://github.com/raulferras/PHP-po-parser) which has support for context. That would probably also require changing the data array format for the translations.