Several updates

Here's a summary:
* RME error is added based on function signature (#76).
* RME error is removed if RME is found in a prototype earlier in the file or in a header file of the same name (#76).
* Definition above main error is removed if a file does not contain a main function (#72). Also fixed some bugs with this check.
* These adjustments are done in a separate function after all files have been graded. This is necessary because we must know which files are `#include`d and which files have RME for which functions.