use gnu99 mode

This standard allows for-loop initial declarations, but also includes
the definitions of things like PATH_MAX, sigprocmask and setenv, in
contrast to the strict c99 mode.

Moreover, this is the default mode of clang, and soon to be (?) GCC.
use for-loop initial declarations

As allowed by the C99 standard.
block: do not update time stamp on click

As a user may want to trigger a different action on click, do not update
the time stamp when a click occurs, because it will delay the next
scheduled update.
block: better error handling

Do not print the first stdout line on error;
Close pipe read end on any error;
Simplify the mark_as_failed() function by omitting the status argument;
Prefer the standard error message (from errno) when possible;
Print an error message in case of waitpid error.
block: catch block error stream

Pipe stderr when forking a block command, in order to dump any error
message.
scripts: do not redirect stderr to stdout

Let i3blocks catch an error and print it on its stderr.
json: parse quoted key

searching for the quoted key is more accurate than just the name. For
example, parsing a click for a block named "mydate" will fail since it
matches the y, while searching "y" is more robust.
sched: consider only positive intervals

It is actually allowed to specify a negative interval, so ignore it in
the sleeptime calculation and in bar_poll_outdated().
sched: execute only timed commands on startup

Add a bar_poll_timed() function meant to be called on startup, to fork
commands with a time interval (not only meant for clicks and signals).

Thus, commands without interval (or defined as 0) won't be executed on
startup. This is useful to simulate a button.

Refs #33
block: introduce special interval value "once"

If "once" is specified for the interval, then the command will be
spawned just once on load. This is useful for one-shot commands, such as
retrieving the hostname or public IP address:

    [ip]
    command=curl -s icanhazip.com
    interval=once

Note that the command will be re-executed on click, which might be
useful for on-demand reload.
block: introduce special interval value "repeat"

If a block interval is specified as "repeat", then its command is
respawned as soon as it terminates. This is useful to repeat blocking
commands, such as watching a cache file:

    [inotify]
    full_text=waiting for writes on /tmp/foo...
    command=touch /tmp/foo; inotifywait -qq -e close_write /tmp/foo; cat /tmp/foo
    interval=repeat
Merge branch 'special-intervals'

* special-intervals:
  block: introduce special interval value "repeat"
  block: introduce special interval value "once"
  sched: execute only timed commands on startup
  sched: consider only positive intervals
block: add a new "label" property

Add a new i3blocks-specific property named "label", used to specify an
optional string to prepend to the full_text after an update. As an
example, this would display something similar to "⌚ 10:57:35":

    [time]
    label=⌚
    command=date +%T
    interval=5
scripts: extract labels

Move labels to the config file instead of letting the scripts print
their own version.
scripts: (battery) avoid utf-8 chars

Refs #36
scripts: (network) take interface from ENV

Make the network script more i3bar-ish by taking the interface from the
BLOCK_INSTANCE environment variable instead of a command line argument.
config: avoid special char

Use word labels for volume and battery, instead of unicode characters.

Refs #36
readme: add compile instructions

Also add a link to the Archlinux i3blocks-git AUR package.

Closes #38
block: detail internal error

Print error messages for any failure between the fork and exec. On
internal error, return a specific error code in order to distinguish
user script error and i3blocks internal error.
Revert "introduce the BLOCK_LIBEXEC env variable"

This reverts commit 2833ae631a5298bff3a71e28b91cdafc1063413c.

This new option added too much complexity, for a not so useful feature.
Moreover, it is totally feasible to keep a $SCRIPT_DIR variable in the
i3blocks config, and call i3blocks like so:

    bar {
      status_command SCRIPTS_DIR=~/src/i3blocks/scripts i3blocks
    }