bpsk: Added decoder and unit tests.

Note: The unit tests can fail if the random noise generation is too
loud.  Also, the decoder can only phase-shift by checking for symbols
earlier than it would otherwise. It cannot "slow down" or delay checking
for a symbol.

This decoder works on simulated inputs from the generator. This decoder
needs real-world testing.