Changed the data structures to all vectors.

The previous way of storing the data was throwing segmentation
faults so I changed to have vectors of blocks in vectors of sets
in vectors of caches. It works just like arrays now but blocks,
sets, and caches can be added or removed. This functionality is
mainly for caches because the blocks and sets won't be changing
during the program run.