Fix build: don't recompile all C++ every time

This was caused by the %.o: %.cpp rule depending on "uicables". Since
it's a phony target, the file never exists, so make will always try to
rebuild it. Regardless of whether anything got run because of that,
the target will then be "newer" than the .o file that was being
considered. Therefore, make thought it had to recompile again.

Fix it by skipping the intermediate, phony target and telling make
that the C++ objects depend directly on the header files.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>