add gimli tracer module support

Moves a couple of private types into internal headers and build a shared object
that the gimli glider debugger can load to extract more human readable
information about a faulting process (see below for example of how it renders
when run against the echo server example).

Since the glider module itself uses libphenom, and the glider module has to be
a shared object, we also need to build a shared object for libphenom.

This requires the current HEAD version of gimli, but only if you enable gimli
support during configure.

Adds a circular log buffer so that we can capture some recent error state in
the trace files produced by gimli too.

```
$ glider `pgrep -x phenom:sched`

...

COUNTERS
                                   bytes  oom  allocs  frees
              memory.ares.channel     88    0       1      0
                memory.ares.query      0    0       0      0
               memory.ares.socket      0    0       0      0
                memory.buffer.16k      0    0       0      0
                memory.buffer.32k      0    0       0      0
                memory.buffer.64k      0    0       0      0
                 memory.buffer.8k      0    0       0      0
             memory.buffer.object      0    0       0      0
              memory.buffer.queue      0    0       0      0
          memory.buffer.queue_ent      0    0       0      0
              memory.dns.addrinfo      0    0       0      0
        memory.example.echo_state      0    0       0      0
                 memory.hook.hook      8    0       1      0
                memory.hook.unreg      0    0       0      0
        memory.socket.connect_job      0    0       0      0
           memory.socket.listener    656    0       2      0
memory.socket.resolve_and_connect      0    0       0      0
               memory.socket.sock      0    0       0      0
             memory.stream.string      0    0       0      0
             memory.string.string     40    0       1      0
           memory.threadpool.pool    832    0       1      0
           memory.variant.variant      0    0       0      0

                                   bytes  oom  allocs  frees  realloc
       memory.ares.query_response      0    0       0      0        0
               memory.ares.string      0    0       0      0        0
              memory.buffer.vsize      0    0       0      0        0
                memory.dns.string      0    0       0      0        0
           memory.hashtable.table   3136    0       3      0        0
                 memory.hook.head      0    0       0      0        0
               memory.hook.string     19    0       1      0        0
             memory.stream.stream      0    0       0      0        0
        memory.threadpool.ringbuf   8480    0       2      0        0
             memory.variant.array      0    0       0      0        0
              memory.variant.json      0    0       0      0        0

                                   dispatched  timer_ticks  timer_busy
                          iosched         120          118           0

                                   dispatched  consumer_sleep  producer_sleep
                   threadpool.dns           0               6               0

RECENT LOGS
1384727716.988 err: phenom:sched/0 will listen on [::]:8080
```