move most of gs() into a separate class for matching. must needed since nested functions is kind of stupid
clean up the main loop of gs() to not use the terminate variable
change is_engaged to take a tuple instead of two params. this allows propose() to be cleaned up and makes more sense
initial commit of algorithms notes
add a note to get_unmatched() explaining the bias/unfairness that our choice method leads to
add a description of three common problems in algorithms