redis caching: please read below

This commit brings in redis caching to Gitolite.

Documentation is not yet done, but briefly:
1.  make sure you have Redis available ('perl -MRedis -e 0' should succeed)
2.  enable caching by uncommenting the "CACHE => 'redis'" line in the rc file

However, this code is not the same as the old "redis" branch (which has now
been deleted).  It is a complete rewrite, much simpler, and much more elegant.
It uses the ideas of memoisation rather than explicit "cache_set" and
"cache_get", and at present memoizes just one function: the access() function
in Load.pm.  That seems to be sufficient for most purposes anyway.
(oops!) new mirror status code assumes too recent perl

As a result, a push fails if *mirroring* for the previous push failed!

If you cannot apply this patch asap, a work around is to remove all files
called "gl-slave-*.status" in repo.git on the server.
warn about 'gitolite setup' losing split keys...

thanks to Jephte Clain for catching this (thread "ssh-authkeys-split not
enabled in gitolite setup" on the mailing list)
redis caching: 'set-default-roles' fix...

flush repo from cache
mirroring: hush mirror status if asked to
http: stderr should dup stdout for non-git command output
Kindergarten module...

https://groups.google.com/forum/#!topic/gitolite/cS34Vxix0Us
make 'help' and 'info' print consistent greeting lines
new textfile function, changes to desc, readme

make it easier to handle text files for arbitrary purposes.  Switch desc and
readme to use that instead of winging it on their own.
allow commands to be defined in non-core list
new motd command; see command help for details
textfile() must also respect repo-umask
Repo patterns: allow spaces in a repo name

Repositories can have spaces in their names, but predefined patterns
don't allow this. This patch fixes it.

Also, `gitolite access` can check access to repositories with the list of them
on STDIN (used in src/triggers/post-compile/update-git-daemon-access-list;
it is an only usage in gitolite, but not in user scripts, yep). It expects
<reponame> [<username>] on a line. As far as <reponame> can contain spaces, it
gives 'DENIED' for such repos. So, make it expect <repo>[^I<username>] to avoid
error (^I is a TAB char).