Extracting reflection operations to a façade class

Closes #845. The motivation for this pull request are described in related issue.

The code inside serialization package needs to be refactored because we have a lot of injection points for `ReflectionProvider`. But I think this change can be done in another pull request after this.

We can schedule this change to 4.2 release because we change internal API.
same here... dependent scope