Added skeleton for reports

Running make in the reports folder should build the report.
Since the assignment handout says reports should be revisions of previous reports,
and git will keep all the history around anyway,
I figure we can just keep changing the same report.
Added reference code

Here are two reference implementations of RSA.
The first one is in C, and uses libgcrypt (a very nice encryption library, also the code for this
is borrowed and slightly modified from my final project for 6.824). It works well, but libgcrypt
is a bit complicated on the inside. Therefore, working from wikipedia, I wrote a new implementation
of RSA in Haskell, which is much easier to read (this task was made simpler because Haskell has
built in support for arbitrary precision integers).

Here are the instructions (this works on the vlsifarm machines):

To compile everything, unzip the attached tarball, and run make:

tar -xf rsa-reference.tar.gz
cd rsa-reference
make

To use the C version, run rsa-libgcrypt:

./rsa-libgcrypt

This will generate a new pair of public and private keys, encrypt and decrypt an integer,
then finally sign the integer and verify the signature (while we were talking yesterday, I forgot
that RSA is also useful for Digital Signatures, which allow you to verify who sent a message).
The test integer (in hex) is 0xDEADBEEF0123456789, though it could be changed to anything
(and could be much larger).

To use the Haskell version, pipe the output of rsa-libgcrypt into rsa-haskell:

./rsa-libgcrypt | ./rsa-haskell

I didn't feel like implementing an algorithm for generating keys, so rsa-haskell reads the output
of rsa-libgcrypt, and uses the keys it generated. It then proceeds to encrypt, decrypt, sign, and
verify the signature for the test integer, and compares the results with rsa-libgcrypt to make sure
they match at each step.