Block: Updated documentation, and changed to use consistent naming.

1) Not having the same values at multiple places provides better clarity.
2) There is potential for confusion that `block.id` and `block.header.id` are different/unique when they are the same. It's then necessary to document they are the same.
2) Adding header properties on block confuses the relation of information, `verifyProofOfWork` (based on the header.nonce) for example only applies to the header. The `merkleRoot` the connecting that with the transactions on the block.