Clean up "tags" and "TAGS" target

Each of the "tags" and "TAGS" make targets was done in a different way,
causing each to have a different problem:

 1. "tags" (ctags) used the "-L" option which turns out is nonportable
    (only available in Exuberant Ctags).
 2. "TAGS" (etags) ran the etags command separately for each source file,
    slowing it down.

The best of both worlds is to use xargs to have ctags/etags operate on
multiple files in each run using xargs. Because we cannot be sure xargs
will run ctags/etags only once, we must delete the file first and use
 the "-a" (append) option.

Also, this patch reduces code duplication - there is now one rule for
both "tags" and "TAGS" targets that uses the correct tool (ctags or etags,
respectively).

Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>