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.