Added support for calling perl subs with various return types

I don't know the perl/C interface well enough to figure out how to
standardize the many variants that we use to call perl code, but
we should probably move the boilerplate code to owl_perl.h and
standardize the error messages, whether we error to stderr or croak,
whether we check ERRSV or count first, whether we return a meaningful
value for count > 1, etc.
Added a perl hook for :away

Note: The sepbar no longer distinguishes between AWAY, A-AWAY, and
Z-AWAY.
Added a hook for wakeup/user input.

I wanted to add a hook that got called on all user-input, but any
non-trivial use of that hook incurred too much overhead (about 7 ms per
paragraph for entry into perl, and another 100 ms or so per paragraph
for execution of the hook; tests run on pasting lorem ipusm, on
linerva).

This hook is called at most once a second (approximately).
Added perl methods to register and unregister idle watchers.
Refactored perl variable creation code in preparation for ambiguous types

When we allow enums in perl, we can't be sure that recreation of an int
isn't actually changing it into an enum (though, really, variables
should only be recreated when you reload module code).  This makes
BarnOwl reinitilize all the fields, but keep the current value, if there
is one.
Added functionality to create new enum variables from C
Added functionality for creating enum variables from perl
Allowed custom validsettings for other non-boolean perl variables.
Add tests for enum variables.
Moved log generation code to perl.
Made owl_util_makepath available from perl

There's probably a better way to do this.  Maybe

sub makepath {
        my $filename = shift;
        $filename =~ s{ ^ ~ ( [^/]* ) } { $1 ? (getpwnam($1))[7]
        : ( $ENV{HOME} || $ENV{LOGDIR} || (getpwuid($>))[7] ) }ex;
        return $filename;
}
(http://docstore.mik.ua/orelly/perl/cookbook/ch07_04.htm) or something.

Additionally, I'm not sure why

 PREINIT:
   char *rv = NULL;
 CODE:
 {
   rv = foo();
   RETVAL = rv;
 }
 OUTPUT:
   RETVAL
 CLEANUP:
   g_free(rv);

is the paradigm for functions returning strings, when foo returns `char
*` and not `const char *`.  I've removed the `= NULL` part of the
initlization, which I assume is left over from when we had to NULL-check
things before freeing them, but I've copied the rest of the code.
Moved log file name generation to perl

I don't think that the class/personal distinction is the best for
general protocols, but I don't know what should replace it.  I've made
class-logging default to only zephyr (a slight change from previous
behavior, where jabber MUC's would be logged to $classlogpath), but made
logging path generation overridable.
Moved outgoing zephyr error logging to perl
Moved the checking of whether or not to log messages to C
Moved notification of message logging to perl
Scrapped the last bits of C code dealing with jabber.

Additionally, moved logging-specific variables to perl (the ones that
could be moved losslessly, i.e., no special validsettings and not
enums).

We still have an OWL_PROTOCOL_JABBER in owl.h, but it does no harm being
there, and we don't use any of the other ones except for AIM.  I figure
there's no harm in waiting and ripping all of them out at the same time
in perl/AIM
Moved the last of the logging-related variables to perl

We seem to have picked logpath as the string variable we test in
tester.c.  Since this is no longer in C, I've replaced it with
personalbell (no particular reason for that choice).
Added a logadmin variable for logging admin messages
Ignore kerberos instances in the sender and recipient when logging

This fixes trac-#151 (Handle logging of personal zephyrs from different
instances of Kerberos principals sanely).  Stripping the instance is
only done for the filename, not for the actual log contents.
purge libfaim