Overhauled `share/unittest.csv' to address v0.05

All functions present in v0.5 are addressed in this patch.
Fixed `extern/Makefile': logic error fixed
Updated `site:core:ssh': feature, cleanup

Now `site:core:ssh.tmux()' can deal with flexible session names, where
if the given session is not an actual tmux session, but a hgd session
by the same name exists, then use that.  It now also exits if the ssh
connection fails, rather than falling back to a local shell which
could be dangerous.

Also the error reporting has been improved, and the code segregated
into an additional private function.

Finally, a help function has been added to explain all this.
Fixed `libexec/core/ssh': return status was always 0
Fixed `site:core:ng'

Some general bug fixes.
Fixed `site:core:ng.hosts()'

This function was making calls to a public function, so it was
effectively trying to parse escape-code data; i.e., it was broken.

Furthermore, it had no private counter-part, so other scripts calling
it suffered from the same fate.

Both these points have been addressed in this patch.
Fixed `site:core:ng.tree()': usage

Usage message updated.
Updated `etc/site.conf': shflags, git

Shflags is now integrated into site itself, not only for module
functions that happen to use it.  This means site itself can now take
certain flags, such as `-h' for help.

A problem with how git was called - assuming it was in the
development directory.  `git' now replaced with `:core:git()',
which takes care of that.
Fixed `site:core:hgd.save()': bugfix
Updated `site:core:util': added note for OSX

Only comments in this commit, but enough information there to allow
site to work on OSX.
Updated `share/template': shflags

Added an example of all "data types' supported by shflags.
New `site:core:ldap': ldap.add(), ldap.search()

An implementation of ldapadd has been added, to allow adding entries
to ldap, for example new users and groups.

Similarly, a public interface to ldapsearch, able to look at users,
groups, and netgroups.
Overhauled: `site:core:cpf' now its own module

This function and all related functions have been moved into its own
separate module.  This has allowed for better testing and better
loose-coupling between it and all callers.

Multiple bugs fixed, it is now more stable, but also a bit slower.

A testing script by the same name has been added to /bin, and
etc/site.conf updated to make use of the new module.  No other module
needs any modification as a result of this change.
Fixed `site:core:unit'

Where the exit status of a called function was 0, but data is still
buffered up in stderr, issue a warning.
New `Makefile' external utils: vimpager, vimcat
New `site:core:ldap': reporting, vimcat, bugs

If an ldif action fails, the ldif is reproduced to stdout, syntax
highlighted with vimcat.

A bug in site:core.ldap.search() fixed: Where a column contained spaces,
the results were genrally a mess.
New `site:core:ng': new, update, fix

Worked the new ldap:search functionality into the existing ng summary
function to remove direct reference to ldapsearch utility.

Added a new ng search utility which searches the cn and description
fields.

Fixed a covert and potentially very confusing bug.
New `site:core:unit': blacklisting of entire modules

It is now possible to blacklist the unit-testing of entire modules.

This should not be abused.
Updated `share/unittest.csv' to address v0.06
Updated `etc/site.conf': cosmetic, fix

Calling internal and private function sets the bash `-x' flag, and
color-codes site functions via grep.

Updated the shflags wrapper, not sure if this has broken anything, but
it has fixed a couple of things at least.