Changed variety of things.

Realized that because unsigned integer overflow is defined in C, uint64_t could be used as the array type in the Integer struct, increasing space efficiency and less use of individual adds. Changed the addition algorithm to make simple use of the the idea of the carry (which I had somehow confused myself on earlier to make the algorithm way more complex). Made the return of the results from the integer_add_* functions much more intuitive; simply pass in the pointer that the result should be stored in. Updated tests in main file for new addition algorithm and updated makefile the FFT stuff.