date_eval: use relativedelta and fix "on 31" date for shorter months

Using relativedelta() we can have "day=31" and still return the last
day of February (28th), say. Our code with `datetime.combine()` did
raise an exception. So, asking for the last day of month would need
a hairy expression (like '... +1month -1day')

The same way, introduce a 'on last' shortcut for the 'on 31' expr,
which makes even more sense.
protocol: inherit from python object, better SO_KEEPALIVE support
protocol: re-send auth credentials at each HTTP request

Server may challenge authentication, now, at each request, even if
it is part of the same TCP stream.
setup.py: tag release
extra/options: fix "have_args=True" case checking number of arguments

The conditionals were wrong, because `have_args=True` and existing
args would branch to the `len(args) == int(have_args)` line, thus
implicitly asking for `len(args) == 1`
service_meta: forward inheritance class, from F3 server

This module is useful outside the F3 server, so bring it here, too.
extra/options: fix case of _list_options

Although set in the API, list-options were not respected by the parser.
extra/options: post_conf option for using more of the config file

The ConfigParser object is created and destroyed within the options.init()
algorithm. This meant that side-channel options could not be read
from it. Now, that custom callable can be fed to the parser to let it
have access to the config.
setup.py: bump version
agent_commands: hook for pre-command function on agent

An example is to restore a "session" before the daemon starts listening
for commands.