Move the definitions of the abstract interfaces down
into an sub-package called 'abstract',
so that the top-level 'crypto' package can be a more useful
entrypoint and documentation base for the whole crypto library.
In particular, this allos the top-level 'crypto' package
to contain example code that makes use of arbitrary parts
of the crypto library without falling into circular dependency hell.
Add two examples in the newly dependency-unencumbered top-level package.
Create abstract.Stream wrapper for Go's standard cipher.Stream interface