Malloc implementation

You will write a simple `malloc` and `free` implementation.

The barebones version is already there for you in `malloc.c`.  You will need to fill in pieces which are commented with `TODO`.

Implementations for `calloc` and `realloc` are also provided as convenience, but you may mostly leave them alone.  You will want to focus on finishing up `malloc` and `free`.