Try to implement covariance (not compiling)

Warn: use of asInstanceOf, unsafe?
Using self-type to hide internal methods

Instead of exposing internal implementation details
in BlitzView trait, force all BlitzViews to be also BlitzViewImpls,
and define methods inside of it.
For convinience defined an implicit conversion that is private to
implementation package.

Rewrote flatMap implicit convertion to gather type-requirements.
Adapt test to new signatures
Final API: rename aggInternal -> genericInvoke
flatMap generalized to supported collections (public IsViewable)

We had to change flatMap signature and make IsViewable public which is
fine because it's general.