Adding Hash() and Random() to the crypto libraries

A function, Random() has been added which takes as input a number,
indicating the number of random bytes to produce as output. Random()
returns that volume of random data, and any errors that occured in the
process of random number generation.

Additionally, Hash() has been added, which takes as input a byte slices
and produces as output the sha256 hash of that byte slice.

Finally, an error in the package declaration has been fixed, changing
the declaration from 'package common/crypto' to 'package crypto'
Updated Entropy functions to use common/crypto

Entropy functions used to define their own random number generator and
entropy sources, now they rely on the common/crypto libraries.

EntropyBytes() has been renamed to EntropyGeneration().

DRNGSeed() has been changed from operating on a block to operating on a
slice of Heartbeat updates. This makes it easier for the block to order
heartbeats before calling the function, and removes a bit of complexity
from the DRNGSeed() function.

entropy_test.go has been updated to reflect all of these changes.
Documenting the codebase in DOCUMENTATION.md

This is intended to be a temporary file while we build out the codebase.
The eventual goal is to have Sia well documented. This particular file
is imperfect and could be compressed in a few ways.

The Sia documentation should always be kept up to date and factually
accurate.
Merge branch 'master' of github.com:Siacoin/Sia
Introduce Basic Heartbeat mechanics

Adding a heartbeat to a block, removing a heartbeat from a block,
creating a new heartbeat.

Most of the functions are just filler, comments explaining what should
happen.
refined entropy tests
Change block to having a map of heartbeats

Also added a bunch of skeleton functions to be filled out soon.
Small change to reflect a change in function name
Added 'state.go' to manage the state

Right now it is just a struct.

DRNGSeed holds the current random number seed for the state.
SecretEntropy holds EntropyStage2 for the next heartbeat
SecretFileProof holds FileProofStage2 for the next heartbeat

ActiveBlock is the block currently being built by the concensus
algorithms. It is being updated as heartbeats come in and will be
refreshed when a block is announced and committed within the blockchain.
Merge branch 'master' of github.com:Siacoin/Sia

Conflicts:
	src/swarm/block.go
	src/swarm/entropy_test.go
	src/swarm/heartbeat.go
	src/swarm/state.go

Broke stateinformed.go, it compiles but fails test. This is because way
heartbeats work has changed. I wasn't quite sure how to change
stateinformed.go to keep things unbroken.

There were lots of changes, I may have missed a few things.
Merge branch 'master' of github.com:Siacoin/Sia
Change []byte to string in all structs

Each struct that previously contained []byte now uses the 'string' type.
Functions that produce data still return []byte.
Reset, recode to fit stateinformed standards
Removed stateconnected, statejoin

Additionally renamed a few things, see diffs
changed NetworkObject to NetworkMessage
changed block to have hearbeat pointers
Fix deadlock in StateInformed block generation
Fix data race & make die actually work
Remove redundant logging in simple network multiplexer
Merge pull request #19 from c00w/stateinformed

Various cleanups for stateinformed