Fixed makefile always rebuilding

Cleaned up makefile
.o files have an implicit rule instead of a generated based off of PROGS
Implemented heap sort
Refactored io code and indices use vector's size type

vector reading and printing is now in auxlib.hpp
indices now use the vector<Type>::size_type instead of int or uint