* Implement basic tree hash caching
* Use spaces to indent top-level Cargo.toml
* Optimize BLS tree hash by hashing bytes directly
* Implement tree hash caching for validator registry
* Persist BeaconState tree hash cache to disk
* Address Paul's review comments
* Replace deposit signatures with SignatureBytes, a struct which lazyly parsers signatures only on demand.
* check byte length when parsing SignatureBytes
* add comment to struct
* distinguish BadSignature and BadSignatureBytes in verify_deposit_signature
* add test for valid signature
* Implements TryInto<Signature> for &SignatureBytes and From<Signature> for &SignatureBytes
* add and use PublicKeyBytes + fix formatting
* fix compiler warning + docs for macro generated structs
* adds tests to ensure correct byte lengths
* small style improvement as suggested by michaelsproul