switch to c++11
use a union to store SHA256 Hash
read a text file instead binary from stdin, fixes #7
added some comments