Remove dead code
BALLOT_BOX: remove records, add receipts

A record (i.e. who voted, when and with which credential in the
context of the web server) is a notion that does not exist in the
cryptographic protocol and does not really make sense in the context
of the command-line tool.

By the way, we add the notion of receipt which, in the context of the
web server, is the ballot hash computed by the server.

Bonus: when a ballot is accepted, we compute its hash only once.
Rename BALLOT_BOX into MONADIC_MAP_RO

It is used for ballots as well as records...
Move authentication-related stuff to its own module

This is preliminary work to make the authentication system more
flexible. This big refactoring should be semantically equivalent to
the previous commit.

Summary:
 - create Auth_common and Web_signatures
 - split Web_election out of Web_common (to cut dep cycle)
 - move service definitions out of Services
 - functorize Templates
Add login dispatch service

Currently, it takes the auth_system name as an optional parameter, and
redirects to the existing services. This revision should have the same
behaviour as the previous one, except for login links and the
associated additional redirections.

Summary:
 - Auth_common.Make is now split in two functors: one for declaring
   services (Make) and one for registering them (Register)
 - auth_systems moved to its own signature
 - login and logout are in their own signature
 - new signature ALL_SERVICES
Generic authentication

This revision should be bisimilar to the previous one.

Summary:
 - each auth system registers $name and $service
 - $service stores a logout handler in Auth_common.user
 - the generic login service redirects to $service if its parameter
   matches $name
 - the generic logout service clears out Auth_common.user and invokes
   the stored logout handler
 - the default auth system is the one registered last
 - Templates directly query Auth_common for available auth systems

TODO:
 - enforce user_type = $name (currently not the case for CAS)
 - export Auth_common.register_auth_system
 - move existing auth systems out of Auth_common
 - integrate with config parsing
 - rework CAS
 - generic login should do security_log
 - do admin login
CAS: remove /cas/ from external service paths

This prefix is not in the CAS spec and seems specific to some
instances. People can add "/cas" to the server path in their config if
needed.
Export register_auth_system

Auth systems are wrapped into a module (with signature AUTH_SYSTEM) to
cope with polymorphism.
Rename LOGOUT_HANDLER into CONT_SERVICE

As in "continuation". This is more generic than just logging out...
Move each auth system to its own module