Rewrite the Makefile

Introduces better interoperation with *NIX systems and categorize the
rules a bit better. The idea is to keep variables like CC
system-dependant but changeable from the command line. Also, it breaks
down build rules into compilation and linking, which improves the
parallelism available in building Carp. And a bunch more that I'll try
to enumerate next.

1. Leave $(CC) up to the system, the user can then either use gcc or
clang to their own will. Will default to the system's cc.

2. Introduce a RELEASE variable which can be set using `make
RELEASE=yes` which then enables -O2 and defines NDEBUG.

3. Add CFLAGS and LDFLAGS and set CFLAGS to more strict
parameters. See Makefile.

4. Split into MAIN_* LIB_* and TEST_* build targets.

5. Add .PHONY to phony targets.

6. Unify the cleaning target for now. DOWNSIDE: Cleaning is not so
modular anymore. There's currently only two cleaning targets: clean
and libtap_clean. I might work on bringing back test_clean,
etc... some other time.
Formatting and coding style cleanup in src/lib/carp_ht.c