Makefile cleanup

- Detect if java is installed and build visualizer automatically if so
- Don't rebuild targets when bin/ dir has been updated