Rewrite Makefile

This rewrite of the Makefile takes advantage of the fact that
the Makefile has been unified for all supported operating systems
to properly express source-file dependencies.
General code review

- Comply with C99 standard.
- Adopt compiling flag -Wextra.
- Adopt compiling flag -Wpedantic.
- Drop use of PATH_MAX constant.