Be more specific with make

This wires up dependencies for all the build steps to ensure that the
keyboard layout is completely rebuilt when anything changes.

This also includes documentation of the core make targets.