Many cool adjustments

Let me try to sum up what this contains:
- Added missing `#include`s in order to use some standard C++ library functions;
- The program now verifies if `cfg.cfg` exists, exiting with an error message to the console if not;
- Modified many function prototypes to references to const objects, so that most string and vector objects are not deeply copied all the time;
- Added `const` to more function parameters (mostly `char*`);
- Added a custom Makefile with debug and release build rules (just 1 file);
- Converted some macros to function templates (yes, I was bored and feel some strange OCD's on macros);
- Performed a few other tweaks that reduce the number of warning messages.