Makefile revamp

- Splitting makefile, moving away from one big file
- Enabling objects per subdir to prevent name collisions