Implemented deserialization as it should be.

(Peeked a little from BitcoinJ's implementation.)
Improved serialization. Added ByteSink.
Replaced Sha256Hash class with a more generic Hash256.

This class is separately maintained in a crypto library so that it can be used in different crypto projects and unify the use of hash values.
Removed utility methods that CryptoUtils provides