Refactor crypotographic specification components.

1. Create Spec<T> interface in spec package.
2. All *Spec classes implement interface.
3. Rework CodecSpec to fit Spec<T>.
4. Create spec for stream ciphers and simple block ciphers.