Several updates

Here's a summary:
* RME error is added based on function signature.
* RME error is removed if RME is found in a prototype earlier in the file or in a header file of the same name.
* Definition above main error is removed if a file does not contain a main function.
* 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.